У меня есть этот сценарий, я использую его для настройки задания CRON для выполнения этого сценария, чтобы он мог проверить, работает ли служба MySQL; если нет, то перезапустите службу MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Я настроил работу cron как.
sudo crontab -e
а затем добавил,
*/1 * * * * /home/ubuntu/mysql-check.sh
Проблема заключается в том, что он перезапускает MySQL при каждом выполнении задания cron. Даже если сервер запущен, он перезапускает службу MySQL, что для этого необходимо исправить в скрипте.
[ ... ]
или test <TEST>
в Bash. Они устарели синтаксис . Используйте [[ ... ]]
вместо этого. Только использовать [ ... ]
и / или test <TEST>
если [[ ... ]]
это не доступно.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
что он делает, запускает подоболочку, при этом service mysql status | grep 'mysql start/running' &> /dev/null
запускается, состояние возврата (выхода) упомянутой подоболочки затем передается в оператор if, который затем проверяет, не является ли он ненулевым, и если он не ненулевой, то он запускает then
блок.