Respawn de procesos en linux mediante cronjob y shell script

(Comments)

Hoy quiero compartir con [email protected] un shell script, para no perder la costumbre, quick n dirty. En éste caso, se trata de mantener corriendo una lista de procesos en linux y reiniciarlos en caso de que se caigan. Es algo muy sencillo, pero útil, no me gusta complicarme demasiado con otras utilidades existentes como supervisor, etc...

Se trata de un cronjob y un script.

El cronjob lo ejecuto cada 3 minutos y comprueba el estado de los procesos, si están corriendo o no.

Es el siguiente:

# /etc/cron.d/ossrpw: crontab entries 

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/3 * * * *   root	/bin/ossrpw

Hay que salvarlo en /etc/cron.d/ con el nombre que querais.

El script, chequea los procesos que queramos y, en éste caso reinicia el servicio ossec si detecta alguno de los procesos caídos de la lista.

#!/bin/bash

for i in /var/ossec/bin/ossec-execd /var/ossec/bin/ossec-maild /var/ossec/bin/ossec-execd /var/ossec/bin/ossec-analysisd /var/ossec/bin/ossec-logcollector /var/ossec/bin/ossec-syscheckd /var/ossec/bin/ossec-monitord 
do
	if [ -z "`ps aux|grep $i|grep -v grep`" ]
	then 
		echo $i 
		service ossec restart
	fi
done

En éste caso lo debereis salvar como /bin/ossrpw. Podeis modificarlo para mantener arriba cualquier proceso, sólo teneis que cambiar el nombre del proceso a chequear y luego la acción, la que querais dentro del if.

Para chequear varias aplicaciones, sólo necesitais poner varios for y varios if en el script y listo.

Si alguno tiene problemas para hacer cambios en el shell script, dejadme un mensaje y os ayudaré en cuanto pueda.

Saludos y feliz finde!

Currently unrated

Comments