Ich habe dieses Skript und verwende es, um den CRON-Job für die Ausführung dieses Skripts einzurichten, damit überprüft werden kann, ob der MySQL-Dienst ausgeführt wird. Wenn nicht, wird der MySQL-Dienst neu gestartet:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Ich habe Cron Job als eingerichtet.
sudo crontab -e
und dann hinzugefügt,
*/1 * * * * /home/ubuntu/mysql-check.sh
Das Problem ist, dass MySQL bei jeder Cron-Jobausführung neu gestartet wird. Selbst wenn der Server ausgeführt wird, wird der MySQL-Dienst neu gestartet. Dies ist eine Korrektur im Skript, um dies zu tun.
[ ... ]
oder test <TEST>
in Bash. Sie sind veraltete Syntax . Verwenden Sie [[ ... ]]
stattdessen. Verwenden Sie nur [ ... ]
und / oder test <TEST>
wenn [[ ... ]]
ist nicht verfügbar.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
Sie Folgendes : Es wird eine Subshell gestartet, in service mysql status | grep 'mysql start/running' &> /dev/null
der ausgeführt wird. Der Rückgabestatus (Exit) der Subshell wird dann an die if-Anweisung übergeben, die dann prüft, ob sie nicht Null ist. und wenn es nicht ungleich Null ist, wird der then
Block ausgeführt.