Jakiego sygnału używa upstart / initctl do ponownego uruchomienia zadania?

10

Jakiego sygnału użyje upstart/ initctlużyje do ponownego uruchomienia zadania? Ponadto, czy jest jakiś sposób na określenie, że należy użyć SIGHUP?

Alternatywnie, czy istnieje sposób zdefiniowania niestandardowego reloadpolecenia, które wyśle ​​SIGHUP? Czy też muszę upstartto zrobić, żeby to zrobić?

David Eyk
źródło
Wierzę, że to SIGQUIT; Odpowiedź na SIGHUP jest w większości przypadków specyficzna dla aplikacji.
Chris S
To miałoby sens. Zobacz moje zmiany wyjaśniające.
David Eyk,

Odpowiedzi:

23

Jakiego sygnału użyje upstart / initctl do ponownego uruchomienia zadania?

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

Ponadto, czy jest jakiś sposób na określenie, że należy użyć SIGHUP?

Posługiwać się: initctl reload

Alternatywnie, czy istnieje sposób zdefiniowania niestandardowego polecenia przeładowania, które wyśle ​​SIGHUP?

Posługiwać się: initctl reload

Czy też muszę wyjść poza upstart, aby to zrobić?

Użyj initctl reloadlub kill/killall -HUP

bindbn
źródło
Bardzo dokładny. Dziękuję Ci. Chyba mogłem znaleźć trochę tego na stronie podręcznika!
David Eyk,
Jest uaktualniony do SIGKILL, jeśli usługa nie zatrzymuje się na czas. „Zatrzymanie zadania wymaga wysłania do niego SIGTERM. ... Jeśli jednak usługa zajmie więcej niż sekundę zabicia (domyślnie 5 sekund), zostanie wysłana SIGKILL” upstart.ubuntu.com/cookbook/#pre-stop
scipilot