Quel signal upstart / initctl utilise-t-il pour redémarrer un travail?

10

Quel signal va upstart/ initctlutilisera pour redémarrer un travail? De plus, existe-t-il un moyen de spécifier que SIGHUP doit être utilisé?

Sinon, existe-t-il un moyen de définir une reloadcommande personnalisée qui enverra un SIGHUP? Ou dois-je sortir upstartpour faire ça?

David Eyk
la source
Je crois que c'est SIGQUIT; La réponse à SIGHUP est spécifique à l'application dans la plupart des cas.
Chris S
Cela aurait du sens. Voir mes modifications de clarification.
David Eyk

Réponses:

23

Quel signal upstart / initctl utilisera pour redémarrer un travail?

SIGTERM

$ strace -fp `pgrep cron` 2> ~/strace &
$ initctl restart cron
$ cat ~/strace
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {0x804a280, [CHLD], SA_RESTART}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({60, 0}, {57, 153662204})     = ? ERESTART_RESTARTBLOCK (To be restarted)
--- SIGTERM (Terminated) @ 0 (0) ---
Process 2275 detached

De plus, existe-t-il un moyen de spécifier que SIGHUP doit être utilisé?

Utilisation: initctl reload

Sinon, existe-t-il un moyen de définir une commande de rechargement personnalisée qui enverra un SIGHUP?

Utilisation: initctl reload

Ou dois-je aller en dehors de upstart pour le faire?

Utilisez initctl reloadou kill/killall -HUP

bindbn
la source
Très approfondi. Je vous remercie. Je suppose que j'aurais pu en trouver sur la page de manuel!
David Eyk
Il est mis à niveau vers un SIGKILL si le service ne s'arrête pas à temps. "L'arrêt d'un travail implique l'envoi de SIGTERM. ... Cependant, si le service prend plus que tuer les secondes d'expiration (par défaut, 5 secondes) alors il sera envoyé SIGKILL" upstart.ubuntu.com/cookbook/#pre-stop
scipilot