2012-11-10 37 views
5

Bash: Check up, eseguire un processo, se non in esecuzioneBash: Check up, eseguire un processo, se non in esecuzione

Ciao, Il mio requisito è che, se il server Memcache è giù per una qualsiasi ragione nella produzione, voglio di riavviare immediatamente

in genere io avviare il server Memcache in questo modo con l'utente come nessuno con la replica, come illustrato di seguito

memcached -u nessuno -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v

Quindi, per questo ho aggiunto una voce nel crontab questo modo

(crontab -e)

*/5 * * * * /home/memcached/memcached_autostart.sh 

memcached_autostart.sh

#!/bin/bash 
ps -eaf | grep 11211 | grep memcached 
# if not found - equals to 1, start it 
if [ $? -eq 1 ] 
then 
memcached -u nobody -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v 
else 
echo "eq 0 - memcache running - do nothing" 
fi 

La mia domanda è dentro memcached_autostart.sh, per autorestarting del server memcached, c'è qualche problema con lo script sopra ??

O

Se non v'è alcun approccio migliore per raggiungere questo (invece di usare cron) Si prega di condividere la vostra esperienza.

risposta

3

Sì, il problema è ps -eaf | grep 11211 | grep memcached presumo sia l'ID del processo che cambia sempre ad ogni avvio, così che cosa si dovrebbe fare è ps -ef | grep memcached

speranza che ha aiutato

3

Invece di eseguirlo da cron, è possibile che si desideri creare un init-script corretto. Vedi /etc/init.d/ per esempi. Inoltre, se lo fai, molti sistemi hanno già funzionalità per gestire la maggior parte del lavoro, come controllare l'avvio, il riavvio, l'arresto, il controllo di processi già in esecuzione, ecc.

La maggior parte degli script daemon salva il pid in un file speciale (ad es. /var/run/foo), quindi è possibile verificare l'esistenza di tale file.

Per Ubuntu, è possibile vedere /etc/init.d/skeleton ad esempio script che è possibile copiare.

+0

penso che ci sia anche una funzione chiamata 'daemon' in '/ etc/init.d/functions'. Anche questo si occupa di runfile.pid. Quindi è una buona idea procurarsi il file delle funzioni dallo script di avvio automatico e chiamare il programma tramite la funzione demone. – anishsane

Problemi correlati