
数週間ごとに実行が停止するバイナリ ファイルがありますが、これを再度起動するだけで、さらに数週間実行できます。ソフトウェアは完璧ではありませんが、自動的に再起動されれば十分完璧です。
バイナリが実行中かどうかを自動的にチェックし、実行されていない場合は起動するように設定するための最適な方法は何ですか?
答え1
プログラムを制御するエレガントな方法は、PID ファイル メカニズムを使用してスクリプトを作成し、プログラムの PID をファイルに保存し、プロセスがまだ実行されているかどうかをチェックすることです。
#!/bin/bash
PID_FILE=/var/run/rerun.pid # need root permission to store in this directory
EXEC=/usr/bin/gedit # replace it with actual executable
function run() {
# execute the program
$EXEC &
# save its PID
echo $! > $PID_FILE
}
if [ -e $PID_FILE ]; then
# check if program is still running
pid=$(<$PID_FILE)
# find the proper process
ps --pid $pid|grep -q `basename $EXEC`
if [ $? != 0 ]; then
# not found - rerun
run
fi
else
# no PID file - just execute
run
fi
スクリプトを定期的に実行します(例:クローンタブ)。