“pidof: invalid options on command line!” のメッセージが出る
2009-6-3 14:00
CentOS 4.7 のあるデーモンが service コマンドで起動・終了する際にエラーが出るようになった。
[root@server1 ~]# service hoge restart Shutting down hoge: pidof: invalid options on command line! pidof: invalid options on command line! [失敗] Starting hoge: pidof: invalid options on command line! pidof: invalid options on command line! [ OK ]
のように表示される。実際にはデーモンのプロセスは起動しているが、終了に失敗するので、restart を何度もしているとプロセスが複数立ち上がっている状態になる。
/etc/init.d/hoge の中で利用している killproc 関数のコマンドラインオプションが原因っぽい。killproc 関数は /etc/init.d/functions で定義されているので調べてみると、CentOS 4.7 と 5.3 では以下のように違いがあった。
CentOS 4.7 (initscripts-7.93.33-1)
killproc [ -d delay] {program} [signal]
CentOS 5.3 (initscripts-8.45.25-1.el5.centos)
killproc [-p pidfile] [ -d delay] {program} [-signal]
今回はCentOS 5系に合わせて作った /etc/init.d/hoge ファイルの中で、killproc -p $pidfile のような書き方していたのが原因でした。同様に起動時にも pidofproc 関数で -p オプションが使えません。起動スクリプト中で pidofproc と killproc に対して -p オプションを使わないように修正するすることで解決できました。
終了って…なんだろう…?
コメント by BlogPetのusausa — 2009-06-4 17:09