Проблема сценария оболочки: сценарий задания cron перезапускает сервер MySQL, когда он случайно останавливается

У меня есть этот сценарий, я использую его для настройки задания 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, что является исправлением в скрипт для этого.

11
задан 21 April 2014 в 12:54

3 ответа

Я подозреваю, что Вы устанавливаете задание крона для выполнения этого сценария в crontab файле, а не в корне crontab файл. Это не корректно, потому что, если Вы не делаете , работает service mysql status как корень, mysql, сервис не будет распознан.

Так, измените сценарий следующим образом:

#!/bin/bash
if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]]
then
    /usr/sbin/service mysql start
fi

Быть уверенным это - исполняемый файл:

chmod +x /path/to/script

Тогда добавляют новую запись в корне crontab следующим образом:

  • Редактирование базируются crontab использование файла:

    sudo crontab -e
    
  • И добавляют следующую строку к файлу:

    */1 * * * * /path/to/script
    
  • Примечание: Я установил задание крона в течение каждой минуты, но можно измениться, как Вы желаете или как Вы думаете, лучше. См. http://en.wikipedia.org/wiki/Cron в этом смысле.

0
ответ дан 21 April 2014 в 12:54

Ответ Radu почти работал. Я должен был установить путь, чтобы заставить его работать:

#!/bin/bash
PATH=/usr/sbin:/usr/bin:/sbin:/bin
if [[ ! "$(service mysql status)" =~ "start/running" ]]
then
    service mysql start
fi
0
ответ дан 21 April 2014 в 12:54

Работы ответа Radu - но этот сценарий работают также

#!/bin/bash
if [[ $(pgrep mysql | wc -l) = 0 ]];
then
    sudo service mysql start;
fi
0
ответ дан 21 April 2014 в 23:54
  • 1
    Таким образом, что я могу сделать теперь. Если я Обновление от человечности 14.04 до человечности 15.04. это поможет? – mr_azad 16 October 2015 в 05:51

Другие вопросы по тегам:

Похожие вопросы: