質問: load averageの値を監視して自動でコマンドを実行するには? redhat linux で自宅サーバーを運用しています。 コマンド top,uptime,w などで見れる load averageについて、 load average: 0.77, 2.39, 3.38 (1分、5分、15分の平均数値) このように表示されますが、 load average の1分の平均が 例えば 30 を超えたら、 特定のコマンド(killall hello.cgi)を自動で実行したいと思っています。 さらさらっとサンプルスクリプトを書いて頂けたら 大変嬉しいのですが。。 あと、このスクリプトを実行する方法ですが、 cronだと、たぶん最短間隔でも1分おきにしか 走らせることは出来ないと思います。 極端な話、毎秒、バックグラウンドで常に load average を監視して 1分平均が 30 を超えたら、即座に killall hello.cgi を実行したいです。 どなたかお知恵を拝借下さい。宜しく御願いいたします。
回答: cgiプロセスはip通信をしません。apacheがクライアントと通信して、データを受け取ったら、cgiプロセスを起動して、環境変数とパイプ経由でデータをcgiプロセスの標準入力にわたし、cgiプロセスは標準出力をパイプ経由でapacheにわたし、apacheはそれを処理結果としてクライアントに送ります。 従って、試みられた方法は無意味です。 cgiの中では環境変数 remote_addr にクライアントのipアドレスが入りますから、cgiの開始時と終了時に、 時刻・開始/終了・プロセスid・remote_addr をsyslogにでも記録すると、何らかの手がかりがあるかもしれません。 具体的な方法は、その言語のカテゴリで聞いてください。 一応、ありがちな原因として、cgiプログラムがループして居座っているという可能性は無いのですか?