Von Ihrer Erwähnung von Upstart werde ich annehmen, dass diese Frage für einen Dienst ist, der auf einem Ubuntu-Server ausgeführt wird.
Auf einem Ubuntu-Server ist ein Upstart-Job wirklich die einfachste und bequemste Option zum Erstellen eines ständig aktiven Dienstes, der zur richtigen Zeit gestartet und mit bekannten Befehlen gestoppt oder neu geladen werden kann.
Um einen Upstart-Service zu erstellen, müssen Sie eine einzige Datei zu /etc/init
hinzufügen. Genannt <service-name>.conf
. Ein Beispielskript sieht wie folgt aus:
description "My chat server"
author "[email protected]"
start on runlevel [2345]
stop on runlevel [!2345]
env AN_ENVIRONMENTAL_VARIABLE=i-want-to-set
respawn
exec /srv/applications/chat.py
Das bedeutet, dass jedes Mal wenn die Maschine gestartet wird, wird es das chat.py
Programm starten. Wenn es aus irgendeinem Grund stirbt, wird es neu gestartet. Sie müssen sich keine Gedanken darüber machen, wie Sie Ihren Code doppelt verzweigen oder anderweitig dämonisieren. Das ist für Sie von Emporkömmling behandelt.
Wenn Sie Ihren Prozess zu stoppen oder starten Sie können dies tun, mit
service chat start
service chat stop
Der Name chat
wird automatisch aus dem Namen der .conf
Datei in /etc/init
fand ich nur die Bedeckung Grundlagen des Emporkömmlings hier. Es gibt viele andere Funktionen, um es noch nützlicher zu machen. Alle verfügbar durch Ausführen von man upstart
.
Diese Methode ist viel bequemer, als Ihren eigenen Daemonisierungscode zu schreiben. Eine Konfigurationsdatei mit 4-8 Zeilen für eine eingebaute Ubuntu-Komponente ist viel weniger fehleranfällig, als wenn du deinen Code sicher doppelt verzweigst und dann einen anderen Prozess hast, der ihn überwacht, um sicherzustellen, dass er nicht verschwindet.
Monit ist ein bisschen wie ein Hering. Wenn Sie Ausfallwarnungen benötigen, müssen Sie ein Überwachungsprogramm auf einem separaten Server Server sowieso ausführen. Verlassen Sie sich auf den Neustart, damit der Prozess immer auf einem Server ausgeführt wird. Stellen Sie dann einen anderen Dienst bereit, der sicherstellt, dass der Server tatsächlich ausgeführt wird. Ausfallzeiten treten aus verschiedenen Gründen auf. Ein Prozess, der auf demselben Server ausgeführt wird, sagt Ihnen genau dann nichts, wenn der Server selbst ausfällt. Sie benötigen einen separaten Computer (oder einen Drittanbieter wie Pingdom), um Sie über diesen Zustand zu informieren.
Gibt es eine authentische Quelle, die Ihre Antwort unterstützt? Das Ausführen auf Ubuntu ist eine Option, aber nicht zwingend (daemonize funktioniert bei beiden). Zweitens müssen Sie monit sogar mit Emporkömmling verwenden, um Ausfallwarnungen zu erhalten. – mtariq
Sie können eine E-Mail erhalten, wenn Sie beim Starten/Stoppen eine E-Mail senden (http://serverfault.com/questions/236925/how-can-i-receive-an-email-when-an-upstart-monovited-script-respawns) . authentische Quelle? Menschen nutzen den Emporkömmling überall in der Produktion. Wir verwenden Upstart in der Produktion Sie können monit nicht für Ausfallalarme verwenden. Es ist zwecklos. Siehe bearbeitete Antwort für den Grund warum. – aychedee
Toller Beitrag. Upstart befindet sich im Debian-Baum, daher kann es wahrscheinlich in Vanilla Debian oder Mint sowie anderen Derivaten verwendet werden. – meawoppl