Eu tenho esse script, estou usando-o para configurar o trabalho CRON para executar esse script, para que ele possa verificar se o serviço MySQL está em execução; Caso contrário, reinicie o serviço MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Eu configurei o cron job como.
sudo crontab -e
e depois adicionado,
*/1 * * * * /home/ubuntu/mysql-check.sh
O problema é que ele reinicia o MySQL em todas as execuções de tarefas do cron. Mesmo se o servidor estiver em execução, reinicie o serviço MySQL, o que é a correção no script para fazer isso.
[ ... ]
ou test <TEST>
no Bash. Eles são sintaxe obsoleta . Use em [[ ... ]]
vez disso. Use apenas [ ... ]
e / ou test <TEST>
quando não[[ ... ]]
estiver disponível.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
que isso faz é iniciar um subshell, no qual service mysql status | grep 'mysql start/running' &> /dev/null
é executado, o status de retorno (saída) do subshell é passado para a instrução if, que verifica se é diferente de zero, e se é não diferente de zero, então ele corre o then
bloco.