Bash-Skript, um den Prozess zu starten, zufällig zu warten, den Prozess zu beenden und neu zu starten

Ich bin ein absoluter Anfänger und versuche, ein Bash-Skript zu erstellen, um den Start und das Beenden einer Befehlszeilen-App zufällig zu gestalten. Ich plane, das Skript beim Booten (Crunchbang) nach einer leichten Verzögerung mit dem folgenden Befehl in der Datei autostart.sh automatisch zu starten (hier zu finden:http://interwebworld.co.uk/2011/10/23/how-to-launch-programs-automatically-at-startup-in-crunchbang-linux/ )

(sleep 300s && /home/myuser/Scripts/randomizer.sh) &

Dies ist im Wesentlichen das, was ich im randomizer.sh-Skript mit ein bisschen Pseudocode erreichen muss:

start applicationfile
wait a random period of time
if applicationfile is still running
    kill its process
    wait a random period of time
    exit this script and restart this script
else exit this script and restart this script

Die randomizer.sh, wie ich sie bisher habe und bei der ich etwas Hilfe begrüßen würde, ist wie folgt (enthält Reste des Pseudocodes) und die hier gefundene Schlafverzögerung:http://blog.buberel.org/2010/07/howto-random-sleep-duration-in-bash.html

/path/to/applicationfile -s 111.222.333.444 -u username -p password
sleep $[ ( $RANDOM % 150 ) + 60 ]m
if applicationfile is still running
    kill $(ps aux | grep '[u]sername' | awk '{print $2}')
    sleep $[ ( $RANDOM % 150 ) + 60 ]m
    exec $randomizer.sh
else exec $randomizer.sh

Ich "denke", dass die Nicht-Pseudo-Teile so funktionieren sollten, wie sie sind, aber bitte korrigiere mich oder passe sie an, wenn ich falsch liege. Die anfängliche Befehlszeile für Anwendungsdateien funktioniert wie sie ist, und ich habe die Prozessabbruchzeile bereits getestet und sie funktioniert wie erwartet. Applicationfile hat keine eingebaute Möglichkeit, sich von der Kommandozeile aus zu beenden, aber die tote Verbindung auf dem Remote-Computer wird nach 5 Minuten lokal beendet, sodass es für meine Bedürfnisse akzeptabel ist, sie lokal zu beenden.

Was ich nicht weiß, wie ich damit umgehen soll, ist die Zeile über dem Kill, die prüft, ob der Prozess überhaupt läuft. Tut mir leid für die Textwand, aber ich wollte zeigen, dass ich so viel getan habe, wie ich schon konnte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage