De nombreux programmes Unix acceptent des signaux comme USR1
et USR2
. Par exemple, pour mettre à jour l'exécutable de Nginx à la volée, vous envoyez kill -USR2
.
Je comprends que USR1
est un signal "défini par l'utilisateur", ce qui signifie que la personne qui a créé le programme peut l'utiliser pour signifier "arrêter" ou "vider vos journaux" ou "imprimer foo mille fois" ou autre chose. Mais je ne comprends pas pourquoi ils doivent utiliser ce nom arbitraire. Pourquoi pas kill -UPGRADE
ou kill -GRACEFUL_SHUTDOWN
? Unix n'autorise-t-il que des signaux spécifiques ?
Pendant que nous y sommes, Nginx utilise également les signaux suivants (voir documentation ) :
- TERM, INT : Arrêt rapide
- QUITTER : Arrêt progressif
-
HUP :
- Rechargement de la configuration
- Démarrer les nouveaux processus de travail avec une nouvelle configuration
- Arrêt définitif des anciens processus de travail
- USR1 : Rouvrir les fichiers journaux
- USR2 : Mise à jour de l'exécutable à la volée
- WINCH : Arrêt définitif des processus de travail
HUP ? WINCH ? Quelle est la raison de ces noms ? Où puis-je en apprendre davantage à ce sujet ?
2 votes
A propos de rien - Il est intéressant de noter que nginx utilise QUIT pour une fermeture en douceur. C'est traditionnellement similaire à TERM+dump-a-core. TERM est capable de s'arrêter en douceur. Tout dépend de la façon dont on gère les signaux, mais c'est bizarre quand les développeurs sortent des sentiers battus.
2 votes
TIL :
man signal
traite des signaux et en énumère 31.