Проблема сценария оболочки: скрипт задания 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, что является исправлением в сценарии для этого.

1
задан 21 April 2014 в 13:54

2 ответа

Ответ Раду почти сработал. Мне пришлось установить путь, чтобы он работал:

#!/bin/bash
PATH=/usr/sbin:/usr/bin:/sbin:/bin
if [[ ! "$(service mysql status)" =~ "start/running" ]]
then
    service mysql start
fi
3
ответ дан 24 May 2018 в 09:07
  • 1
    Фактически я установил свой PATH в файле crontab. Во всяком случае, в вашем случае вам нужно использовать PATH=/usr/sbin:$PATH или использовать полный путь для service, когда я отредактировал свой ответ. – Radu Rădeanu 22 August 2014 в 22:15

Ответ Radu работает, но этот скрипт работает также

#!/bin/bash
if [[ $(pgrep mysql | wc -l) = 0 ]];
then
    sudo service mysql start;
fi
1
ответ дан 24 May 2018 в 09:07
  • 1
    Я проверил pgrep mysql, и я получил 0 для остановки mysql и 2 для запуска. Поэтому я задал условие как if [[ $(pgrep mysql | wc -l) = 0 ]];, и это сработало для меня. – Alin C 11 February 2018 в 22:18
  • 2
    вероятно, лучше ваш путь ... Я сделаю изменения. – JxAxMxIxN 16 February 2018 в 01:48

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

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