Automatischer Neustart eines Prozesses, wenn dieser abstürzt

Automatischer Neustart eines Prozesses, wenn dieser abstürzt

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 chkconfigfunktionieren, 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

verwandte Informationen