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.