Comment définir différents signaux d'arrêt / redémarrage avec upstart

8

Je commence à convertir tous nos systèmes en utilisant upstart pour gérer nos différents processus d'application. Une chose qui me manque constamment est la capacité d'envoyer un signal différent au processus stopou aux restartévénements.

Par exemple, nous exécutons nos processus Web avec Unicorn . Unicorn possède une excellente API de gestion des signaux. Lorsque je veux recharger le processus avec élégance, j'envoie au maître pid un signal USR2. Pour les fermer correctement, j'envoie une commande QUIT. TERM (signal d'arrêt par défaut de l'arrivé) constitue un arrêt immédiat.

Un autre exemple utilise Resque . Pour arrêter gracieusement un travailleur, je lui envoie le signal QUIT. Le signal TERM provoque à nouveau un arrêt immédiat, que l'enfant du travailleur soit bifurqué ou non.

Upstart prend-il en charge les signaux personnalisés? Je n'arrive pas à le trouver n'importe où, ce qui m'inquiète que j'utilise le "mauvais outil pour le travail".

localshred
la source

Réponses:

4

Ubuntu 10.04 est livré avec la version 0.6.6 upstart qui a les paramètres kill signaletkill timeout qui configureraient les valeurs de signal et de timeout pertinentes. Le signal "recharger" est codé en dur pour SIGHUP.

Les versions plus récentes d' upstartintroduire le reload signalparamètre - voir les autres réponses à cette question pour plus de détails.

le-wabbit
la source
Bon à savoir, je ne sais pas pourquoi le signal de rechargement est codé en dur, mais je suppose que je devrai vivre avec pour le moment.
localshred
Selon la réponse de diclophis ci-dessous, cela est désormais possible via reload signal SIGUSR2, mais nécessite upstart v 1.10.0.
ghayes
6

Depuis upstart v1.10.0, vous pouvez définir un "signal de rechargement".

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

Cette version est disponible sur ubuntu à partir de la v13.10 ... J'ai utilisé ces instructions pour mettre à niveau mon instance ec2:

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

J'utilise rails + puma et fais des rechargements gracieux avec cette directive dans mon fichier /etc/init/app-1.conf:

reload signal SIGUSR2
diclophis
la source