« 出発を祝って RanRan へ | メイン | とんかつを食った »

2005年07月16日

プロセス管理プログラム

CEEK.JP NEWS は、2年くらい前に作ったプログラムで動いています。今もそうだけど、2年前は、かなりへっぽこなプログラマだったので、ソースもぐちゃぐちゃです。というか、もう読みたくないようなコードですね。

常駐プログラムじゃないのに、以下が宣言されていない始末。

use strict;

まぁ。それとはあまり関係ないんだけど、正規表現が多いし、エラー処理が適当なおかげで、プロセスがずっと立ち上がったままというのが多々あるわけです。どこかで無限ループしているような気がするのだけど、原因を確かめる気にすらならんorz

ということで、暴走しているっぽいプロセスがあったら、勝手に kill すうようなプログラムを作成しました。

プロセス管理プログラム(Perl)

kill の部分をメール送信にするのもいいかもしれない。

$ps = `ps aux | grep perl`;

この grep で、監視するプログラムを調整します。ユーザー名も指定しておく方がいいです。だって kill できないもん。

$max = 5;

この時間(分)を過ぎたプロセスを抽出するわけですな。分単位で書くのだけど、あまり長く設定すると無理。日付をまたぐ処理がかなり適当なので。

あとは、このプログラムを Cron で定期的に実行すれば監視できます。が、このプログラムが立ち上がらないほどサーバに負荷がかかっている場合は、無理です。諦めてください。

# Start Time の部分は要らないような気がしてきた。 # Ps Time だけをチェックする方がよさげ。ま。せっかく書いたので、消さないでそのまま。

自己責任でどうぞ。

そういえば、リモートで物理的にリセットボタンを押す装置が欲しいな。前にも書いたっけ?

2005年07月16日 23:15 | Programming

トラックバック

コメント

> リモートで物理的にリセットボタンを押す装置が欲しいな。

USBitで、ラジコンカー付きで、是非どうぞ!
(冗談です)

http://www.canopus.co.jp/catalog/usbit/usbit_index.htm

投稿者 yukoba : 2005年07月17日 02:55

> リモートで物理的にリセットボタンを押す装置が欲しいな。
リセットボタンにリレーとかフォトカプラとかつけてもいいならPICNICとか使えばそんな難しくは無いと思います。

投稿者 Hotspring : 2005年07月17日 16:39

>> yukoba さん
普通に欲しいなぁ。

>> Hotspring さん
USB-IO がいいかなー。とか思ってます。
イーサネット付きのを買うなら、玄箱とか買っていじりたい気分です。

投稿者 ceekz : 2005年07月18日 07:36

以前増井さん(pitecan.comの人)が2chで言ってたんだけど,
ejectコマンドでCD-ROMドライブを開け閉めして,
そのふたに棒を付けておけば,向かいに置いたマシンの
リセットボタンが押せるのではないか,と言ってた.
これをぜひ実践していただきたい.

投稿者 takot : 2005年07月20日 21:31

>> takot さん
(・∀・)イイ!!

投稿者 ceekz : 2005年07月21日 03:23

DELL、hpあたりの箱なら、リモートコンソールのカードを付けられます。
新規購入時に 1万円くらいの追加出費が必要になりますが。

意外と便利。

投稿者 reservoirムロタ : 2005年07月21日 09:41

>> reservoirムロタ さん
SSH とは、違うものなのでしょうか?

投稿者 ceekz : 2005年07月21日 22:36