
Ich habe eine App, die beim Start des Betriebssystems automatisch gestartet werden muss. Ich verwende CentOS 6 und verwende daher ein LSB-Init-Skript, das in platziert ist /etc/init.d
. Bisher ist das in Ordnung und funktioniert.
Nun... außerdem möchte ich, dass meine App automatisch neu gestartet wird, wenn sie abstürzt (mit Fehler beendet wird). Idealerweise kann sogar eine maximale Anzahl von Versuchen definiert werden. In der Info.plist des Macs befinden sich die Schlüssel. KeepAlive
Da sie bei mir bereits chkconfig
funktionieren, habe ich mich gefragt, ob ich damit etwas anfangen könnte.
Ich weiß, es gibthttp://mmonit.com/monit/aber für meine Anforderungen ist es vielleicht zu viel.
Antwort1
Vorausgesetzt, Sie steuern das init.d-Skript zum Starten dieses Prozesses, möchten Sie die Ausführung Ihres Prozesses vielleicht einfach wie folgt in das init.d-Skript einbinden:
until myserver; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
Dadurch wird Ihr Prozess jedes Mal, wenn er beendet wird, für immer in einer Until-Schleife gehalten. Zählen usw. könnte man folgendermaßen einführen:
cnt=0
max=3
until myserver; do
let cnt=cnt+1
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
[ $cnt = $max ] && exit;
done