Назад | Перейти на главную страницу

Проблемы с перезапуском MySQL при запуске через планировщик crontab

Я написал сценарий оболочки, который запускает MySQL, когда его убивают / завершают. Я запускаю этот сценарий оболочки с помощью crontab.

Мой cron ищет файл сценария с именем mysql.sh под /root/mysql.sh

sh /root/mysql.sh  

mysql.sh:

cd /root/validate-mysql-status
sh /root/validate-mysql-status/validate-mysql-status.sh

validate-mysql-status.sh:

# mysql root/admin username
MUSER="xxxx"
# mysql admin/root password
MPASS="xxxxxx"
# mysql server hostname
MHOST="localhost"
MSTART="/etc/init.d/mysql start"
# path mysqladmin
MADMIN="$(which mysqladmin)"

# see if MySQL server is alive or not
# 2&1 could be better but i would like to keep it simple
$MADMIN -h $MHOST -u $MUSER -p${MPASS} ping 2>/dev/null 1>/dev/null
if [ $? -ne 0 ]; then
    # MySQL's status log file
    MYSQL_STATUS_LOG=/root/validate-mysql-status/mysql-status.log

    # If log file not exist, create a new file
    if [ ! -f $MYSQL_STATUS_LOG ]; then
        cat "Creating MySQL status log file.." > $MYSQL_STATUS_LOG
        now="$(date)"
        echo [$now] error     : MySQL not running >> $MYSQL_STATUS_LOG
    else
        now="$(date)"
        echo [$now] error     : MySQL not running >> $MYSQL_STATUS_LOG
    fi

    # Restarting MySQL
    /etc/init.d/mysql start

    now1="$(date)"
    echo [$now1] info     : MySQL started >> $MYSQL_STATUS_LOG
    cat $MYSQL_STATUS_LOG
fi

Когда я запускаю выше сценарий оболочки mysql вручную с использованием crontab webmin, MySQL успешно запущен (когда его убили).

Тем не мение, когда я планирую его с помощью задания cron, MySQL не запускается. Журналы печатаются правильно (это означает, что мой cron успешно выполняет запланированный сценарий, однако MySQL не перезапускается).

crontab -l отображает:

* * * * * sh /root/mysql.sh 

Из URL-адресов я обнаружил, что мы должны указать абсолютный путь для перезапуска MySQL через планировщики, такие как cron. Однако у меня это не сработало.

Кто-нибудь может мне помочь, пожалуйста!

Спасибо.

Существует служба под названием monit, которая делает это настолько просто, насколько это возможно. Вы можете настроить его для любых служб для перезапуска этой службы при определенных условиях, и он может предупредить вас, если его условия не будут выполнены. Монит