14.04 Reiniciar automaticamente o binário se ele parar

14.04 Reiniciar automaticamente o binário se ele parar

Eu tenho um arquivo binário que para de ser executado a cada poucas semanas. Você pode simplesmente iniciá-lo novamente e ele será executado por mais algumas semanas. O software não é perfeito, mas seria perfeito se fosse reiniciado automaticamente.

Qual é a melhor maneira de configurar algo para verificar automaticamente se o binário está em execução e iniciá-lo se não estiver?

Responder1

Uma maneira elegante de controlar seu programa é criar um script com mecânica de arquivo PID, que salvará o PID do programa no arquivo e verificará se o processo ainda está em execução:

#!/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

Agora execute o script periodicamente (por exemplo, emcrontab).

informação relacionada