Eu sugeriria Monit . Você pode instalá-lo a partir do Synaptic ou do sudo apt-get install monit. Eu uso no meu servidor para monitorar meu SSH, Apache, etc e reiniciá-los se eles falharem.
Eu tenho um programa de trabalho que inicio em rc.local. O programa não é o mais estável do mundo, então eu gostaria de configurar um watcher de algum tipo que verifique se o programa mencionado está avançando e se não, inicie o programa novamente.
Posso imaginar algumas maneiras de fazer isso, embora tenha certeza de que há mais:
Algum de vocês tem exemplos de qualquer uma dessas implementações ou recomendações sobre como devo fazer isso?
Você pode usar um script auxiliar que executa o processo em um loop infinito, por exemplo:
#!/bin/bash
# Infinite loop
while true; do
# Get starting time
start_epoch=$(date +%s)
# Run program
my-program
# Abort if the application exited too quickly
duration=$(( $(date +%s) - $start_epoch ))
if [[ "$duration" < 30 ]]; then
echo "Program exited too quickly. Aborting relauncher."
exit
fi
done
exit
Chame esse script em vez de my-program
em /etc/rc.local
.
Para um exemplo mais complexo, veja este script que eu uso para reiniciar automaticamente o Applet NetworkManager.