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.
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.