So definieren Sie verschiedene Stopp- / Neustartsignale mit Upstart

8

Ich fange an, alle unsere Systeme auf Upstart umzustellen, um unsere verschiedenen Anwendungsprozesse zu verwalten. Eine Sache, die mir ständig fehlt, ist die Fähigkeit, ein anderes Signal an den Prozess stopoder restartEreignisse zu senden .

Zum Beispiel führen wir unsere Webprozesse mit Unicorn aus . Unicorn hat eine großartige Signalverarbeitungs-API. Wenn ich den Prozess ordnungsgemäß neu laden möchte, sende ich dem Master-PID ein USR2-Signal. Um sie ordnungsgemäß herunterzufahren, sende ich einen QUIT-Befehl. TERM (Standardstoppsignal des Upstarts) bedeutet ein sofortiges Herunterfahren.

Ein anderes Beispiel ist die Verwendung von Resque . Um einen Arbeiter ordnungsgemäß herunterzufahren, sende ich ihm das QUIT-Signal. Das TERM-Signal bewirkt erneut ein sofortiges Herunterfahren, unabhängig davon, ob das Kind des Arbeiters gegabelt ist oder nicht.

Unterstützt Upstart benutzerdefinierte Signale? Ich kann es anscheinend nirgendwo finden, was mich beunruhigt, dass ich das "falsche Werkzeug für den Job" verwende.

Einheimische
quelle

Antworten:

4

Ubuntu 10.04 wird mit der Upstart-Version 0.6.6 geliefert, die die Parameter kill signalund enthältkill timeout , mit denen relevante Signal- und Timeout-Werte konfiguriert werden. Das "Reload" -Signal ist fest codiert SIGHUP.

Neuere Versionen von upstartführen den reload signalParameter ein - siehe weitere Antworten auf diese Frage für weitere Details.

the-wabbit
quelle
Gut zu wissen, nicht sicher, warum das Nachladesignal fest codiert ist, aber ich denke, ich muss vorerst damit leben.
Localshred
Laut der Antwort von diclophis unten ist dies jetzt über möglich reload signal SIGUSR2, erfordert jedoch einen Upstart v 1.10.0.
Ghayes
6

Ab Upstart v1.10.0 können Sie ein "Reload-Signal" definieren.

https://launchpad.net/upstart/1.x/1.10.0

Diese Version ist ab Version 13.10 auf Ubuntu verfügbar ... Ich habe diese Anweisungen verwendet, um meine ec2-Instanz zu aktualisieren:

/ubuntu/302762/upgrading-13-04-to-13-10

Ich verwende Rails + Puma und lade mit dieser Anweisung in meiner Datei /etc/init/app-1.conf ordnungsgemäß neu:

reload signal SIGUSR2
Diclophis
quelle