
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