14.04 Reiniciar automáticamente el binario si se detiene

14.04 Reiniciar automáticamente el binario si se detiene

Tengo un archivo binario que deja de ejecutarse cada pocas semanas, simplemente puedes iniciarlo nuevamente y se ejecutará durante algunas semanas más. El software no es perfecto pero sería bastante perfecto si se reiniciara automáticamente.

¿Cuál es la mejor manera de configurar algo para verificar automáticamente si el binario se está ejecutando e iniciarlo si no es así?

Respuesta1

Una forma elegante de controlar su programa es creando un script con mecánica de archivo PID, que guardará el PID del programa en un archivo y verificará con él si el proceso aún se está ejecutando:

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

Ahora ejecute el script periódicamente (por ejemplo, encrontab).

información relacionada