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

Теперь периодически запускайте скрипт (например, вкронтаб).

Связанный контент