“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 オプションを使わないように修正するすることで解決できました。

  • ブックマーク : アクセス: 17,521回
  • カテゴリー : Linux
  • キーワード :

1件のコメント

  1. 終了って…なんだろう…?

    コメント by BlogPetのusausa2009-06-4 17:09

Sorry, the comment form is closed at this time.

34 queries. HTML convert time: 0.061 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン