kill -0 <PID> は何をするのでしょうか?
kill -0
という手段を初めて知ったので、kill -0
の用途を質問させてください。
kill の man には以下のように書かれています。
sig に 0 を指定した場合、シグナルは送られないが、 エラーのチェックは行われる。これを使って、プロセス ID や プロセスグループ ID の存在確認を行うことができる。
プロセスを制御する手段として、おなじみなのは、PID をファイルに保存しておき、プロセスを終了させたいときは PID ファイルの中身の PID を指定して kill するというものです。
たとえばプロセス foobar を以下のように起動させて
foobar &
echo $! > foobar.pid
終了させるとき
kill -9 $(cat foobar.pid)
ここではシグナル 9 を送信( kill -9
)していますが、冒頭に引用したように、シグナル 0 を送信( kill -0
)することもできるようです。
kill -0
の用途としては、以下のような理解であっているでしょうか?
プロセス foobar の状態と foobar.pid ファイルの存在有無は関係が無い。つまり、foobar.pid ファイルが存在していたとしても、それがプロセス foobar が走っているという保証にはならない。ゆえに、プロセス foobar の状態を確認するために kill -0 を用いる。