綾小路龍之介の素人思考

[linux] プロセスの死活確認、シグナル0は生存確認

死活確認したい場合、プロセスファイルの有無とか調べるんだけど、それだとcore吐いて死んだ時は残る。せっかくプロセスファイルがあるのならそれを使って死活確認。

たとえば、httpdのプロセスの死活確認。生きていれば何も表示されない。適当なプロセス番号入れるとそんなプロセスはないといわれる。

$ kill -0 `cat httpd.pid`
$ kill -0 4864
bash: kill: (4864) - No such process

grepとか使うのはもうやめましょう。

sig に 0 を指定した場合、シグナルは送られないが、 エラーのチェックは行われる。これを使って、プロセス ID や プロセスグループ ID の存在確認を行うことができる。成功した場合 (少なくとも一つのシグナルが送信された場合)、 0 が返される。エラーの場合 -1 が返され、 errno が適切に設定される。

リファレンス

  1. Manpage of KILL
  2. Manpage of KILL
  3. manpage kill - Google 検索

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-07-08T02:12:38+09:00
  2. Modified: 2009-07-08T02:12:38+09:00
  3. Generated: 2017-10-30T23:09:37+09:00