ぼくらの研究

ぼくらのための研究をしていきます。

sm-client dead but pid file existsエラーの解決

   

前にmqueueやらclientmqueueやらがパンパンに膨れ上がって、いっこうに消化される気配もなかったときに上位表示されていた記事を参考にして対応したことがありました。

しかし、rm -rf clientmqueueでclientmqueueディレクトリごと消してプロセスを消して以降、cronさんが全く動いてくれないという事態に。

cronのステータスや実行権限を調べてみても問題なし。そこで状況が分からないので自分のメールアドレスにログを送るように設定しました。

……しかし待てど暮らせどcronさんからは何の音沙汰なし。

crontabファイルを再度確認して、MAILTO=’○○○’に入力されている自分のアドレスもチェック。ここも問題なし。

メールは送られてこないけど、LinuxやApacheは動いていて致命的なエラーではない……。

ここで


/etc/init.d/sendmail status

でsendmailのステータスチェックをしてみたところ、


sendmail (pid 2417) is running...
sm-client dead but pid file exists

と返ってきました。

おや……めっちゃ怪しいのが出てきたぞ……ということでsm-clinetを再起動することに。しかし


can not chdir(/var/spool/clientmqueue/): No such file or directory

とまた怒られました。

 

clientmqueueディレクトリを作成して、もう一度sm-clientをrestart、成功。

その後正常にcronさんが動作。

無事解決しました。

 

参考記事で推奨していたclientmqueueディレクトリを消すということにはいろいろと心配なことがありましたが、記事には参考になりましたという声しかなくて、いろいろ調べてみて消すこと自体は問題なさそうでその後もサーバーが正常に動いてたのでまさかこんな事態に発展するとは……

結論、sm-clientが原因(犯人)でした。clientmqueueディレクトリを削除した僕が原因(犯人)でした。sm-clientがclientmqueueディレクトリにキューをためこむような設定の時にはディレクトリごと削除することはしないように。