プロセスがクラッシュしたときに自動的に再起動する

プロセスがクラッシュしたときに自動的に再起動する

OS の起動時に自動起動する必要があるアプリがあります。 CentOS 6 で実行しているので、 に配置された LSB init スクリプトを使用しています/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

これにより、プロセスが終了するたびに、基本的に永久に until ループ内でプロセスが起動されます。カウントなどは次のように導入できます。

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

関連情報