
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).