14.04 バイナリが停止した場合に自動的に再起動する

14.04 バイナリが停止した場合に自動的に再起動する

数週間ごとに実行が停止するバイナリ ファイルがありますが、これを再度起動するだけで、さらに数週間実行できます。ソフトウェアは完璧ではありませんが、自動的に再起動されれば十分完璧です。

バイナリが実行中かどうかを自動的にチェックし、実行されていない場合は起動するように設定するための最適な方法は何ですか?

答え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

スクリプトを定期的に実行します(例:クローンタブ)。

関連情報