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

现在定期运行脚本(例如定时任务)。

相关内容