Ich habe ein sehr einfaches Python-Skript, das ich immer auf meinem Ubuntu 12.04-Server ausführen möchte. Ich dachte an Upstart + Monit. Das Problem ist, dass diese Tools für einen einfachen Sterblichen wie mich ziemlich kompliziert erscheinen und ich im Web kein einfaches Beispiel finden kann.
Ist Emporkömmling + Monit Overkill? Kennt jemand eine einfachere Alternative oder ein gutes Tutorial für Upstart + Monit? Wenn ich nur sichergehen möchte, dass das Skript immer ausgeführt wird, ist überhaupt eine Überwachung erforderlich?
python
upstart
monitoring
sebpiq
quelle
quelle
Antworten:
Der einfachste Weg, dies zu tun, ist dies in
/etc/init/something.conf
:Respawn startet es wieder, wenn es getötet wird oder ungleich Null beendet wird (wie eine nicht erfasste Ausnahme). Dies funktioniert ab Ubuntu 10.04.
Wenn Sie 12.04 haben, können Sie mehr Phantasie bekommen. Das obige führt Ihr Skript als root aus. In 12.04 können Sie setuid / setgid hinzufügen:
Wenn Ihr Skript beendet wird, wenn kein Netzwerk verfügbar ist und Sie planen, es auf einer instabilen Netzwerkverbindung auszuführen, sollten Sie dies beheben und es einfach am Leben erhalten / erneut versuchen. Wenn Sie dies nicht können, müssen Sie es möglicherweise auch manuell starten, wenn ein Netzwerkgerät gestartet wird. Sie können dies also in platzieren
/etc/network/if-up.d/yourscript
(mit chmod + x ausführbar machen)Wobei Ihr Skript nur etwas Willkürliches und Einzigartiges für dieses bestimmte Skript ist und "etwas" mit dem Jobnamen identisch ist (wie der
/etc/init/something.conf
zuvor vorgeschlagene).quelle
upstart
richtig? Bedeutet dies, dass das Skript auch beim Booten gestartet wird (was großartig wäre!)? Undrespawn
ist genug, damit Sie nicht einrichten müssenmonit
?Der übliche Ansatz aus alten Zeiten bestand darin, eine Datei mit einem Zeitstempel oder der Prozess-ID zu schreiben
/tmp
und dann zu überprüfen, ob diese Prozess-ID noch ausgeführt wurde oder ob der Zeitstempel noch aktuell war.Sie können auch eine einfache
while [ 1 ]; do phyton-script.ph; done
Methode ausführen, mit der das Skript neu gestartet wird, falls es zurückkehrt.Für weitere Möglichkeiten geben Sie bitte weitere Informationen zu Ihrem Skript an. Vor allem, wenn Sie erwarten, dass es unerwartet beendet wird oder abstürzt.
quelle