さて、Linuxでプロセスを再起動できるようにしたいので、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
ほぼ同じ結果で、何か不足していますか?誰かが私が欲しいものに到達するために必要なものを知っていますか?
「再起動」信号はありません。/proc/<pid>
から環境(environ、cwd、cmdline、セキュリティコンテキスト…)を記録し、手動でプロセスを再開する必要があります。
SIGHUPは閉じていますが、設定によって規則によってのみ使用され、プログラムに設定を再ロードするように要求します。
「RELOAD」信号があります。
コンテナでsquidプロセスを再起動した場合、コンテナでpid 1を実行するsquid
プロセスがあると想定します。ただし、次のように「再ロード」できます。
kill -HUP 1