3

Что ж, я хочу иметь возможность перезапускать процессы в linux, и поэтому я изучил страницы man kill для этого. Очевидно, что kill -l перечислил бы все сигналы, которые я мог бы послать процессу, чтобы сделать то, что мне нужно, а именно:

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Я думал, что получу желаемый эффект, используя сигнал SIGSTOP (номер 19), а затем сигнал SIGCONT (номер 18) следующим образом:

kill -19 $PID_NUMBER # It stops! nice, we are reaching just what we wanted.
kill -18 $PID_NUMBER # Ok... it continues to death... that isn't funny though.

Я также попробовал с сигналом номер 1: SIGHUP с почти такими же результатами, я что-то упустил? Кто-нибудь знает, что мне нужно, чтобы достичь того, что я хочу?

2 ответа2

5

Сигнал «перезагрузки» отсутствует. Вам нужно записать среду (environment, cwd, cmdline, контекст безопасности ...) из /proc/<pid> и вручную запустить процесс снова.

SIGHUP близок, но он используется только по соглашению, чтобы попросить программу перезагрузить свои настройки.

0

Есть сигнал "RELOAD".

Предположим, у вас есть процесс squid с pid 1, запускаемый в контейнере, если вы перезапустите процесс squid, то контейнер выйдет. но вы можете "ЗАГРУЗИТЬ" это так:

kill -HUP 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .