Ho questo script, lo sto usando per configurare il lavoro CRON per eseguire questo script, in modo che possa verificare se il servizio MySQL è in esecuzione; in caso contrario, riavvia il servizio MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Ho impostato cron job come.
sudo crontab -e
e poi aggiunto,
*/1 * * * * /home/ubuntu/mysql-check.sh
Il problema è che riavvia MySQL ad ogni esecuzione di cron job .. anche se il server è in esecuzione, riavvia il servizio MySQL che cosa è la correzione nello script per farlo.
[ ... ]
o test <TEST>
in Bash. Sono sintassi deprecata . Usa [[ ... ]]
invece. Utilizzare solo [ ... ]
e / o test <TEST>
quando non[[ ... ]]
è disponibile.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
cosa fa, avvia una subshell, in cui service mysql status | grep 'mysql start/running' &> /dev/null
viene eseguito, lo stato di ritorno (uscita) di tale subshell viene quindi passato all'istruzione if, che controlla quindi se è diverso da zero, e se è non è diverso da zero, allora si corre il then
blocco.