プロセスの競合時に自動的に再起動

プロセスの競合時に自動的に再起動

オペレーティングシステムの起動時に自動的に起動する必要があるアプリケーションがあります。私はCentOS 6で動作しているので、Placeを使用しています/etc/init.d。これまでのところ、すべては素晴らしいと動作します。

さて、それ以外にも、私が望むのは、アプリがクラッシュ(エラーで終了)した場合に自動的に再起動できることを望むことです。理想的には、最大試行回数を定義することもできます。 MacのInfo.plistにはいくつかのキーがありますが、作業を始めたKeepAlive のでchkconfig、それで何かできるのかと思います。

私はそこにいることを知っていますhttp://mmonit.com/monit/しかし、おそらく私のニーズに比べて多すぎるようです。

答え1

init.dスクリプトを制御してこのプロセスを開始する場合は、次のようにinit.dスクリプトでプロセスの実行をラップできます。

until myserver; do
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
done

これにより、プロセスが終了するたびにデフォルトで永久にループ内にプロセスが保持されます。計算などは次のように紹介できます。

cnt=0
max=3
until myserver; do
    let cnt=cnt+1
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
    [ $cnt = $max ] && exit;
done

関連情報