Uptart / initctl bir işi yeniden başlatmak için hangi sinyali kullanır?


10

Bir işi yeniden başlatmak için hangi sinyal kullanılacak upstart/ initctlkullanılacak? Ayrıca, SIGHUP'un kullanılması gerektiğini belirtmenin bir yolu var mı?

Alternatif olarak, reloadSIGHUP gönderecek özel bir komut tanımlamanın bir yolu var mı? Yoksa bunu yapmak için dışarı çıkmam gerekir upstartmi?


SIGQUIT olduğuna inanıyorum; SIGHUP'a yanıt çoğu durumda uygulamaya özgüdür.
Chris S

Bu mantıklı olurdu. Açıklama düzenlemelerime bakın.
David Eyk

Yanıtlar:


23

Bir işi yeniden başlatmak için uptart / initctl hangi sinyali kullanır?

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

Ayrıca, SIGHUP'un kullanılması gerektiğini belirtmenin bir yolu var mı?

kullanın: initctl reload

Alternatif olarak, SIGHUP gönderecek özel bir yeniden yükleme komutu tanımlamanın bir yolu var mı?

kullanın: initctl reload

Yoksa bunu yapmak için uptart'ın dışına çıkmam gerekir mi?

initctl reloadVeya kill/ kullanınkillall -HUP


Çok titiz. Teşekkür ederim. Galiba adam sayfasında bunlardan bazılarını bulabilirdim!
David Eyk

Hizmet zamanında durmazsa bir SIGKILL'e yükseltilir. "Bir işin durdurulması SIGTERM'in ona gönderilmesini içerir. ... Ancak, hizmet zaman aşımı süresini (varsayılan, 5 saniye) öldürmekten daha fazla zaman alırsa
scipilot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.