Führen Sie ein Python-Skript im Hintergrund aus und starten Sie es bei einem Absturz neu.

Führen Sie ein Python-Skript im Hintergrund aus und starten Sie es bei einem Absturz neu.

Ich habe ein sehr einfaches Python-Skript, das ich gerne immer auf meinem Ubuntu 12.04-Server laufen lassen würde. Ich dachte daran, Upstart + Monit zu verwenden. Das Problem ist, dass diese Tools für einen Normalsterblichen wie mich ziemlich kompliziert erscheinen und ich im Internet kein einfaches Beispiel finden kann.

Ist Upstart + Monit übertrieben? / Kennt jemand eine einfachere Alternative? / Oder ein gutes Tutorial?

Antwort1

Genommen vondiese Antwort:

Sie könnten ein Bash-Skript schreiben monitor.sh, das Ihr Python-Skript startet und es neu startet, wenn es abstürzt, aber nicht neu startet, wenn das Skript normal beendet wird:

#!/bin/bash
until myscript.py; do
    echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Starten Sie dann einfach das Monitorskript im Hintergrund:

nohup monitor.sh &

Alternativ nohupkönnen Sie auch Folgendes in Betracht ziehen:tmuxoderBildschirmzum Ausführen von Hintergrundprozessen.

Antwort2

Die obige Antwort ist großartig. Ich kann derzeit keinen Kommentar abgeben, daher kann ich die Antwort hier vielleicht verbessern.

Möglicherweise möchten Sie sogar eine Funktion für „myscript“ schreiben, da es sich um ein Python-Skript handelt und nicht in der Bash-Umgebung ausgeführt wird.

Also,

#!/bin/bash

myscript(){
    python3 myscript [args..]
}

until myscript; do
    echo "'myscript' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Wer neu bei Python oder Bash ist, weiß diese Kleinigkeit nicht. Könnte ihnen helfen. Ich hatte am Anfang immer mit solchen Kleinigkeiten zu kämpfen. Ich möchte nicht, dass es anderen so geht!

verwandte Informationen