Senden reload-Befehl Schnösel service
Wie kann ich senden eine Art reload-Befehl an einen daemon gestartet von upstart
ohne die Notwendigkeit, vollständig zu stoppen es?
- Gestartete Dienste über
upstart
sind entweder mit einem time-Programme, die ausgeführt werden, um Ereignisse zu behandeln, oder Sie sind lang laufende daemons. In der Regel stdin/stdout/stderr für diese Arten von Programmen nicht vorhanden ist -- Sie schreiben von log-Dateien, wenn Sie benötigen, über Probleme zu berichten, und Lesen Sie die Eingabe von bestimmten Dateien. Ich bin neugierig, warum Sie versuchen, dies zu umgehen, normales Paradigma-welches problem versuchst du zu lösen? - Ich betreibe eine node.js Skript als daemon über upstart, das muss laufen permanent. Dieses Skript manchmal braucht, um einen reload-Befehl. Leider upsatrt nicht unterstützt syntax wie
reload servercontrol
. Also ich dachte über die Verwendung von stdin, da kann ich nicht aufhören, das Skript fürstop servercontrol & start servercontrol
. reload service
senden eineSIGHUP
signal, um Ihren Prozess; dieSIGHUP
- signal wird oft von Dämonen auf Anfrage re-Lektüre Ihrer Konfigurations-Dateien... funktioniert das für Sie? Es wäre einfach für die admins zu verwalten, die Ihre Aufgabe ähnlich wie alle anderen jobs auch so.- Oh... wow. Das funktioniert. Ich bin geflasht. Ich könnte schwören, dass es nicht funktioniert ein paar Minuten. Ich werde Bearbeiten meine Frage, und Sie werde nach Ihrer Antwort, damit ich abstimmen kann, und überprüfen Sie es? 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
upstart
verwaltet normalerweise zwei Arten von Prozessen:Daemons bieten in der Regel ein signal-handler für die
SIGHUP
signal, die Fragen der daemon neu-Lesen und neu-analysieren Ihrer Konfigurationsdateien. (SIGHUP
ist ein hang-up-signal, relevant zu Klemmen, die können kommen und gehen, wie Telefonleitungen oder SSH-Protokolle werden verbunden oder getrennt werden. Für Programme, die nicht über Klemmen, es hat keinen Sinn, das "Aufhängen" des Terminals, also das signal würde nicht gesendet werden, daemon, außer durch system-administrator-Aktion.)Wenn Sie können ändern Sie Ihr Programm an neu-Lesen der Konfiguration erhält es einen
SIGHUP
signal, dann können Sie das standard -upstart
reload service
Befehl, die Konfigurationsdateien neu zu laden. (Sie können alles auf dieses signal, aber system-Administratoren erwarten daemons neu-Lesen der Konfiguration-Dateien auf dieses signal -- etwas anderes zu tun möglicherweise verwirrend und nervig.)reload
Befehl. Im Skript selbst einfach zu erklärenreload signal USR2
oder was auch immer Ihre app exepects.