Creare un demone con la bash
Inviato da funkgui on marzo 14th, 2012Vediamo come ho risolto il problema… ovviamente sono aperto a critiche e/o migliorie!
Vediamo un esempio pratico che è poi quello che mi serviva:
innanzitutto ho preparato il mio script “checkPing” in modo che andasse in loop infinito, (in questo caso il loop infinito non mi serviva perché il ping va in loop da solo come default e quindi l’ho commentato per appunto)
#!/bin/sh
echo $$ > /tmp/checkPing.pid
HOST=google.it
#while [ true ]
#do
exec ping $HOST>/dev/null
#done
eseguo il ping con il comando exec, in modo che ping assuma il mio pid (mio del mio script ovviamente ^_^)
Questo sarebbe bastato come demone, ma il problema era che ripartisse in automatico nel caso venisse interrotto per una qualsivoglia ragione.
Per risolvere questo mi sono affidato al buon vecchio cron aggiungendo al file /etc/crontab
* * * * * /bin/sh /home/funkgui/daemon.sh
e questo è il file daemon.sh
#!/bin/sh
PIDFN=/tmp/checkPing.pid
PID=`cat $PIDFN`
let “c= ps aux |tr –squeeze-repeats ‘ ‘|cut -f 2 -d ‘ ‘|grep $PID|wc -l”
if [ $c -eq 0 ]; then
echo “Programma non attivo… Lo rieseguo”
nohup /home/funkgui/checkPing &
fi
spero come al solito possa servire a qualcuno.
Alla prossima


