• ベストアンサー

Linux ログファイルの読み方を教えてください

RedHatLinux8を使っており、 ログの内容がよく分からなくて困っています。 /var/log/messages を読むと、 application bug: crond(xxxxx) has SIGCHLD set to SIG_IGN but calls wait(). という記録が、ずらずらと並んでいます。 crondがわけのわからない仕事をしているのだとは思うのですが、どのような意味なのでしょうか? なにかの問題を示しているのであれば、どのような対策が必要でしょうか。 また、たいした問題がないとしても、できれば、この記録でログファイルを埋め尽くすのを避けたいのですが、よい方法はないでしょうか。 以上の件、お教えいただけたら幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

こんばんは。 cron は vixie cron ですか?最新版をお使いですか? 古い cron にはセキュリティホールもありますので、 出来るだけアップデートしたほうがいいですよ。 それによってエラーも出なくなるかもしれませんし。 RHL8 用の Errata には vixie-cron の RPM はありませんでしたが、 参考 URL から最新版がダウンロードできます。 うまく動かなければ SRPM を手に入れてビルドする必要があるかも。 さて、子プロセスを生成するプログラムは、 子プロセスの状態の変化を SIGCHLD(SIGCLD)シグナルで受け取り、 子プロセスが終了しても続行したいときはハンドラとして SIG_IGN を指定するプログラムが多いのですが(これ自体はバグではない)、 これは Linux、特に POSIX 準拠のプログラムではいけないこととされており、 SIG_IGN の代わりに SIG_DFL を使うべしと signal(2) のマニュアルにも書いてあります。 その辺りが臭いんだと思いますよ。 実際、crond に限らず他のデーモンでもこのエラーメッセージを出す ものがありますので(私のところでは何も出ていません)。 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/signal.2.html http://www.linux.or.jp/JM/html/LDP_man-pages/man2/wait.2.html vixie cron のソースを見た(「読んだ」ではありません(^^;)限り、 Linux や BSD などさまざまな環境で動くようちゃんと考慮して 書かれているように見えましたが……。 Turbolinux 8 Workstation 用の cron のソースには vixie-cron-xxxx.sigchld{,2}.patch などというパッチもありましたし。

参考URL:
http://www.redhat.com/swr/i386/vixie-cron-3.0.1-74.i386.html,http://www.jp.redhat.com/download/

その他の回答 (2)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

#1のエラーメッセージの意味は間違っています。 『子プロセスからの終了信号を無視する』設定(SIGCHLD set to SIG_IGN)なのに,子プロセスの終了を待っている(calls wait())。 何かのアプリケーションにこういうバグがある,というメッセージですね。 対策を考える場合,一連のメッセージの頭に付いているであろう時間やpidも大事な判断材料ですよ~。 あと,そのエラーが始めて出現した頃,システムにどんな変更を加えたのか,よく思い出してみましょう。

  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.1

アプリケーションバグと書いてある通りなのではないでしょうか? 私もよくわかりませんが、cronで動かしているプログラムにバグがあって、まだ処理が残っているのに、終了したというシグナルを出しているようです。