Welches Signal verwendet upstart / initctl, um einen Job neu zu starten?

10

Welches Signal wird upstart/ wird initctlverwendet, um einen Job neu zu starten? Gibt es außerdem eine Möglichkeit anzugeben, dass SIGHUP verwendet werden soll?

Gibt es alternativ eine Möglichkeit, einen benutzerdefinierten reloadBefehl zu definieren , der ein SIGHUP sendet? Oder muss ich nach draußen gehen, um das upstartzu tun?

David Eyk
quelle
Ich glaube, es ist SIGQUIT; Die Antwort auf SIGHUP ist in den meisten Fällen anwendungsspezifisch.
Chris S
Das würde Sinn machen. Siehe meine Klarstellungsänderungen.
David Eyk

Antworten:

23

Welches Signal wird upstart / initctl verwenden, um einen Job neu zu starten?

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

Gibt es außerdem eine Möglichkeit anzugeben, dass SIGHUP verwendet werden soll?

Verwenden: initctl reload

Gibt es alternativ eine Möglichkeit, einen benutzerdefinierten Neuladebefehl zu definieren, der ein SIGHUP sendet?

Verwenden: initctl reload

Oder muss ich mich außerhalb des Emporkömmlings bewegen, um das zu tun?

Verwenden Sie initctl reloadoder kill/killall -HUP

bindbn
quelle
Sehr ausführlich. Vielen Dank. Ich schätze, ich hätte etwas davon auf der Manpage finden können!
David Eyk
Es wird auf ein SIGKILL aktualisiert, wenn der Dienst nicht rechtzeitig beendet wird. "Um einen Job zu stoppen, muss SIGTERM an ihn gesendet werden. ... Wenn der Dienst jedoch mehr als Sekunden für das Beenden des
Scipilot