• 締切済み

指定プログラムのプロセスを監視・killするには?

CGIが不正終了(もしくは無限ループ)して、CPUに負担をかけ続けることで悩んでいます。 topコマンドで負担をかけているプロセスを発見してkillすることは可能ですが、これを自動で実行するようなことはできないでしょうか。 cronを使って1分間に1度チェックし、3分以上同じプロセスが動いている場合にkillしたり、もしくは不具合の起こる特定のプログラム(hoge.cgi等)を監視してkillするということができるようにしたいのです。 自分で考えたのは「top -n 1」で出力して、3分間同じプロセスがCPUに負担をかけ続けている場合にkillできるようにphpなどでプログラミングすることでしたが、もっと簡単にできるような方法がありますでしょうか。

みんなの回答

回答No.1

まずはそのCGIスクリプトを正しく動かすことに100%注力すべきです。 どんな動作のスクリプトかわかりませんが、勝手にプロセスをkillするとどんな弊害が起きるかわかりませんので最終手段として使うべきです。 ご希望のスクリプトを作ることは可能でしょうけど、根本的解決にはなりません。せめて負荷をみて異常があったら携帯にメールするような監視を設置してはいかがでしょう。 異常時にメール送信できさえすれば、aliasesなどでスクリプトに渡して処理させることも可能ですし。

namun
質問者

補足

該当CGIに関してはそのようにいたします。 結局topコマンドを加工して負荷を判断するプログラムを自分で作成しました。 PHPにtopコマンドに該当する便利なプロセス制御関数がなかったので、 結構荒技で作りました。 とりあえず解決しましたのでこれにて回答を締め切りたいと思います。 ありがとうございました。

関連するQ&A