Tengo este script, lo estoy usando para configurar el trabajo CRON para ejecutar este script, para que pueda verificar si el servicio MySQL se está ejecutando; de lo contrario, reinicia el servicio MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
He configurado el trabajo cron como.
sudo crontab -e
y luego agregó
*/1 * * * * /home/ubuntu/mysql-check.sh
El problema es que reinicia MySQL en cada ejecución de trabajo cron ... incluso si el servidor se está ejecutando, reinicia el servicio MySQL, ¿qué es la corrección en el script para hacerlo?
[ ... ]
o test <TEST>
en Bash. Son sintaxis obsoleta . Usar en su [[ ... ]]
lugar. Sólo utilizar [ ... ]
y / o test <TEST>
cuando [[ ... ]]
es no disponible.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
lo que esto hace es iniciar una subshell, en la que service mysql status | grep 'mysql start/running' &> /dev/null
se ejecuta, el estado de retorno (salida) de dicha subshell luego se pasa a la instrucción if, que luego comprueba si no es cero, y si es no distinto de cero, entonces se ejecuta el then
bloque.