回答:
あなたの場合:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
<<command>>
実行したいコマンドに置き換えてください。ループを解消するには、プロセスを終了コード0で終了する必要があります。それ以外の場合は、スクリプトによって再起動されます。
停止した場合にのみ再起動しますか? これの問題は、フリーズする状況を処理しないことです。 したがって、プロセスを確認するだけでは必ずしも効果はありません。したがって、これがWebサーバーのようなものである場合は、ユーザーの視点からスクリプトをチェックする必要があります。
Nagios Monitoringを設定すると、イベントハンドラーを使用できるようになります。これらは、サービスがダウンしたときに実行されるように記述したスクリプトにすぎないため、Webサイトがダウンした場合に、Apacheなどを再起動するスクリプトを作成できます。
ディストリビューションによって異なりますが、このタスクには「monit」を正常に使用しました。とても簡単です。独自のチェックを記述したり、プロセスのPIDを監視したりできます。
monitrcファイルの例:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
短い答え:いいえ、自分で行う必要はありません。
長い答え:開始するには親プロセスが必要であり、それが有効であることを確認し続け、必要に応じて再起動します。
daemontools
それを管理するようなものを使用できます。