Shell Script para reiniciar los servicios si se caen/se bloquean

Es común que el proceso se bloquee/caiga debido a varias razones, las cuales usted puede investigar y solucionar los problemas pero eso puede tomar un poco de tiempo.

Sin embargo, una cosa que puede hacer inmediatamente para reducir el tiempo de inactividad y mejorar la disponibilidad es automatizar el reinicio del proceso si se cae.

Hagamos esto a través de la autopista – shell scripts

Puede utilizar los siguientes scripts de shell para ejecutar a través de crontab, que comprobará los servicios cada 15 minutos (puede ajustar el tiempo de intervalo) y se iniciará si encuentra que no se están ejecutando. ¿Le parece bien?

En este artículo, le daré dos ejemplos de cómo iniciar los servicios si están caídos.

Si está utilizando CentOS/RHEL 7 entonces también puede consultar este artículo que explica el uso de systemd para reiniciar.

Auto-restart MySQL, PHP-FPM, Nginx if down

Hace unas semanas, moví Geek Flare a DigitalOcean con EasyEngine y MariaDB se cayó dos veces en una semana.

mariadb-crashed

Usted ve que se estrelló temprano en la mañana y estaba abajo por más de 3 horas, que no es bueno. Es mi blog, así que no hay impacto $$$ pero todavía me siento mal por ello.

Ok, showtime now..

  • Cree un archivo usando el editor vi en la ubicación que desee (en esta demostración lo pondré en /opt/startifdown.sh)
  • Copie y pegue el siguiente script en el archivo y guárdelo
/bin/bash
#Scripts para iniciar servicios si no se están ejecutando
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       /etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       /etc/init.d/mysql start > /dev/null 
fi
  • Cambie el permiso del archivo para que sea ejecutable
chmod 755 startifdown.sh

Pruébelo manualmente para asegurarse de que el script es ejecutable.

Puede detener el servicio y utilizar el script para comprobar si se está iniciando. Una vez que esté satisfecho, puede poner esto en cron para que se ejecute cada 15 minutos.

*/1 * * * * /opt/startifdown.sh

Consulte mi artículo sobre crontab si necesita algo de inspiración para cambiar el tiempo del intervalo.

Ahora, este pequeño script se encargará de arrancar los servicios si se caen y no tendré esas 3 horas de inactividad.

¡Mucho mejor!

Reinicie automáticamente WebSphere DMGR, Nodeagent, JVM si se caen

Cree un archivo con los siguientes scripts – lo llamaré startwasifdown.sh

/bin/bash
#Scripts para iniciar los servicios si no se están ejecutando
#Especifique la ruta DMGR aquí
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Especifique aquí la ruta del perfil
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       $DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       $Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep servidor1 |grep -v grep > /dev/null
if [ $? != 0 ]
entonces
       $Profile/bin/startServer.sh servidor1 > /dev/null
fi

Nota: Cambie la ruta para adaptarla a su entorno y añada más líneas para más de una JVM.

  • Cambie el permiso del archivo para que sea ejecutable
chmod 755 startwasifdown.sh

Pruébelo manualmente, y una vez que esté contento con él, puede poner esto en cron para ejecutarlo cada 15 minutos o lo que le convenga.

*/1 * * * * /opt/ startwasifdown.sh

Esto es sólo una pauta para que usted pueda automatizar las cosas.

¿Le gusta la automatización? Aprenda sobre scripts de shell bash.