スクリプトのkillプロセスの後にスリープする必要があるのはなぜですか?

目次

序文

一部の再起動スクリプトでは、プロセスを強制終了した後、一定期間スリープすることがよくあります。なぜですか。次に、勉強しましょう


理由

killコマンドは、指定されたシグナルを対応するプロセスに送信することがわかっています。killコマンドの動作原理は、システム操作シグナルとプログラムのプロセス識別番号をLinuxシステムのカーネルに送信し、次にシステムカーネルに送信することです。動作するプロセス識別番号プロセスを指定できます。通常、15(SIGTERM)と9(SIGKILL)を使用します。情報番号はなく、デフォルトは15です。

9と15の意味:

9 (KILL):杀死一个进程,强行终止一个进程,这可能会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。

15 (TERM):正常停止一个进程,这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源,相当于让进程正常终止。

このことから、キルプロセスはすぐには有効になりませんが、ある程度の遅延があると推測できます。

プロセスを無条件に終了する9を除いて、すべてのkillシグナルの中で、他のシグナルはブロックまたは無視される可能性があり、シグナル9の場合でも、最初に保留キューに入れられ、次のCPUスケジューリングまで有効になりません。通常、プロセスを強制終了した後、プロセスが強制終了されるようにしばらくスリープします。そうしないと、プロセスが強制終了されず、再起動が失敗します。

追加:kill -lを使用して、すべての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	

おすすめ

転載: blog.csdn.net/qq_36551991/article/details/109825755