respawnd - 自動再起動デーモン

指定されたコマンドを,それが終了する都度,自動的に繰り返し起動するデーモン

まずは,ダウンロード
ここからどうぞ!

展開,ビルド,そしてインストール
# tar zxvf respawnd.tar.gz ↓で展開
# make ↓でビルド
# make install ↓でインストール

make では,この他にも 「 uninstall 」 「 archive 」 「 clean 」 などの引数で,それなりの動作を ・・・
詳細は Makefile をのぞいて見て下さい.

使用法
# respawnd -h ↓
usage :respawnd [-w <wait>] [-e <code>] <command to be run>
respawnd -h

wait( 省略可 ) default 値:3
被起動コマンドが終了した後,再起動するまでのインターバル
単位:秒
code( 省略可 ) default 値:193
子プロセスで execv( ) が失敗した場合に,親プロセスへ返す終了コード
respawnd は fork( ) で子プロセスを生成し,その子プロセスのなかで,与えられたコマンドを execv( ) で起動する. このコマンド起動が成功して,その後に何らかの原因によりそのコマンドが終了した場合には,その終了コードが親プロセスに返される.
この場合,コマンドがどのような理由で終了したとしても respawnd そのものの動作としては正常なので,親プロセスはその終了コードを syslog に書き出して,指定されたインターバルののちにコマンドを再起動する.
一方,execv( ) 自体が失敗した場合 ( 与えられたコマンドが見つからない,などの場合 ),respawnd はエラー終了させるべきだろう. そこで execv( ) が失敗した場合にはそのことを親プロセスに伝えるために,子プロセス終了コードを使っている. この値は default では 193.
しかし,起動するコマンド自体が終了コードとして 193 を返す可能性がある場合,当該コマンドが ( 普通の挙動として ) 終了コード 193 で終了したのか,execv( ) が失敗したのか,親プロセスは判別できない.
そこで,被起動コマンドが終了コードとして 193 を返す可能性がある場合には,これと重複しないように,execv( ) が失敗したことを示す別の値を -e オプションで指定する
command to be run( 必須 )
反復的自動再起動させるコマンド
respawnd は,コマンドを execv( ) で起動するので,絶対パスで指定すること

戻る