Questo è uno script per linux che permette di riavviare automaticamente i demoni se crashano, qui per Apache, può adattarsi anche per i programmi.
Anche se si sa la proverbiale stabilità di linux, se troppo sotto sforzo il computer, sopratutto se è una macchina molto lenta potrebbe succedere che va in crash qualcosa, se si sono già verificati dei crash di servizi o programmi e si sa qual'è, e, se si vuole fare andare down il meno possibile un demone (apache nell'esempio) questo script ha il compito di monitorarlo e riavviarlo se si ferma.
Lo script bash per riavviare automaticamente servizi o programmi
Lo script è molto semplice, si possono vedere i commenti che ho aggiunto che spiegano a cosa servono le varie cose.
#!/bin/bash
#path assoluta del comando per riavviare il programma/servizio/demone questa è la path di slackware!
RIAVVIA="/etc/rc.d/rc.httpd restart"
#path assoluta del comando pgrep
PGREP="/usr/bin/pgrep"
#nome del demone
NET="httpd"
#trova il PID del demone
$PGREP ${NET}
# if che vede se il programma/servizio/demone non è avviato
if [ $? -ne 0 ]
then
# se non è avviato lo riavvia
$RIAVVIA
fi
Questo script d'esempio ha la funzione di verificare se crasha Apache, utile per non fare andare down troppo tempo il sito/server, comunque, g l'utilizzi dello script sono "infiniti", è possibile monitorare quasi qualunque cosa, utile per demoni ma si potrebbe anche controllare se è attivo un programma per scaricare che sta facendo il download da internet quando non si è al computer, le risorse di sistema utilizzate per il controllo sono misere, come la grandezza dello script.
Per chi non sapesse come avviare automaticamente lo script:
innanzitutto salva lo script con un qualsiasi nome ma con estensione .sh
, poi lo s'imposta tramite crontab, se non si sa usare crontab ricordo che ho presentato gcrontab che è comodissimo per automatizzare linux, dove, si farà eseguire lo script ogni tot. minuti (5 è un buon numero).
Via MWolk.
Thanks to image waffler.
Ottimo articolo, unico problema, con lo script bash soprariportato anche quando il servizio sarà attivo crontab scriverà in /var/mail una notifica col pid del servizio controllato.
Settando crontab ogni 5 minuti come consigliato nell'esempio in pochi giorni saremo sotterrati di inutili avvisi di corretto funzionamento.
La mia esperienza è limitata, l'unica soluzione trovata è stata deviare tutti gli output direttamente da crontab aggiungendo un >/dev/null dopo il path del file bash, ma questo elimina anche i messaggi (utili) di riavvio del demone/programma/servizio.