Script para verificar el estado de un servicio en Linux
Muchas veces necesitamos saber si un servicio se encuentra activo en nuestro Linux y no tenemos una herramienta propia para realizar la comprobacion y no podemos estar todo el día pegados verificando que nuestro servidor esté activo, es por este motivo que les comparto un pequeño script que pueden utilizar para solucionar el problema.
Como root y en consola creamos el archivo tipo script:
# vim /root/scripts/comprueba_servicio_activo.sh
Y le agregamos las siguientes líneas:
#!/bin/bash mysql=`ps awx | grep 'mysql' |grep -v grep|wc -l` if [ $mysql == 0 ]; then service mysql restart echo "Mysql estaba caido y el cron lo reactivo." fi
En el anterior código (que puedes grabar en root con el nombre que gustes .sh), en negritas está el nombre del servicio que vas a comprobar y la acción que vas a tomar si es que no está activo.
Debemos cambiar los permisos al archivo y ponerlo como ejecutable (en mi caso, sólo para root):
# chmod 744 /root/scripts/comprueba_servicio_activo.sh
Y para que nuestro servidor esté verificando cada X tiempo el servicio, lo podemos agregar en el crontab para que realice esta comprobación cada 5 minutos.
Como root, ejecutar:
# crontab -e
Y le agregamos:
# m h dom mon dow command */5 * * * * /root/scripts/comprueba_servicio_activo.sh
Listo! nuestro servidor, estará verificando cada 5 minutos si el servicio de Mysql está activo, de lo contrario lo reactivará. Puedes cambiar a tu gusto el tiempo que quieres que compruebe la función.
Exelente, gracias
Hay un error, tal y como está el chequeo se haría en el minuto cinco de cada hora, no cada cinco minutos. Para hacerlo cada cinco minutos la línea debe quedar así:
*/5 * * * * /root/scripts/comprueba_servicio_activo.sh
Gracias Juan Carlos por la observación, lo actualizo en este momento.