CentOS5でbash.shで以下のコマンドを実行します。

while true; do ls -l foo.tar ; sleep 1 ; done
これを常に監視していて、以上終了したり、ゾンビになってしまったら
一回、プロセスをKillして、再度実行したいのですが
なにかいい方法ありますでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2008/01/09 19:44:35
  • 終了:2008/01/16 19:45:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/01/10 00:24:06

ポイント35pt

方法はいくつかあって、


1.管理プロセス下で動作させる方法

- inittab に記述して、init プロセスに管理してもらう。

Manpage of INITTAB

action を respawn にすれば自動的に再起動します

- daemontools を使う

daemontools

プロセス管理のためのツール群です。

設定方法に癖はありますが、プロセスの起動制御やログの管理などトータルに扱えるのでお勧めです。


2.監視プロセスを別に起動する方法

echo $$ > /var/run/bash_sh.pid
while true; do ls -l foo.tar ; sleep 1 ; done

等としておけば bash_sh.pid にプロセスIDが記述されるので、

別スクリプトなどでそのプロセスが存在しているかを確認することができます。

id:hopefully

これはいいですね。早速検討してみます。

2008/01/10 02:52:27
id:ffmpeg No.2

ffmpeg回答回数1202ベストアンサー獲得回数92008/01/10 01:24:09

id:hopefully

シェルの参考文献ありがとうございます。

2008/01/10 02:52:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません