Ho usato un semplice script con cron per assicurarmi che il programma sia in esecuzione. In caso contrario, lo avvierà. Questa potrebbe non essere la soluzione perfetta che stai cercando, ma è semplice e funziona piuttosto bene.
#!/bin/bash
#make-run.sh
#make sure a process is always running.
export DISPLAY=:0 #needed if you are running a simple gui app.
process=YourProcessName
makerun="/usr/bin/program"
if ps ax | grep -v grep | grep $process > /dev/null
then
exit
else
$makerun &
fi
exit
Quindi aggiungi un cron job ogni minuto o ogni 5 minuti.
Monit è perfetto per questo :)
Puoi scrivere semplici file di configurazione che dicono a monit di guardare ad es. una porta TCP, un file PID ecc
monit eseguirà un comando che specifichi quando il processo che sta monitorando non è disponibile/usa troppa memoria/pegging la CPU per troppo tempo/ecc. Apparirà anche un avviso e-mail che ti dice cosa è successo e se può fare qualcosa al riguardo.
Lo usiamo per mantenere in esecuzione un carico dei nostri siti Web, avvisandoci tempestivamente quando qualcosa va storto.
-- Il tuo fedele impiegato, Monit