J'ai ce script, je l'utilise pour configurer le travail CRON pour exécuter ce script, afin qu'il puisse vérifier si le service MySQL est en cours d'exécution; sinon, il redémarre le service MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
J'ai configuré le travail cron en tant que.
sudo crontab -e
puis ajouté,
*/1 * * * * /home/ubuntu/mysql-check.sh
Le problème est qu'il redémarre MySQL à chaque exécution de tâche cron .. même si le serveur est en cours d'exécution, redémarrez le service MySQL quelle correction dans le script pour faire cela.
[ ... ]
ou test <TEST>
dans Bash. Ils sont obsolètes . Utilisez [[ ... ]]
plutôt. Utiliser uniquement [ ... ]
et / ou test <TEST>
quand [[ ... ]]
n'est pas disponible.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
ce que cela fait, c'est qu'il démarre un sous-shell, dans lequel service mysql status | grep 'mysql start/running' &> /dev/null
est exécuté, le statut de retour (sortie) dudit sous-shell est ensuite transmis à l'instruction if, qui vérifie ensuite si elle n'est pas nulle, et s'il n'est pas différent de zéro, il exécute le then
bloc.