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 stop
oder restart
Ereignisse 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.
quelle
reload signal SIGUSR2
, erfordert jedoch einen Upstart v 1.10.0.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:
quelle