通过 crontab 调度程序运行时 MySQL 重启的问题

通过 crontab 调度程序运行时 MySQL 重启的问题

我编写了一个 shell 脚本,当 MySQL 被终止时,它会启动它。我使用 crontab 运行这个 shell 脚本。

我的 cron 会查找名为mysql 脚本 在下面/root/mysql.sh

sh /root/mysql.sh  

mysql.sh:

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

验证mysql状态.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

当我运行上述使用webmin的crontab手动执行mysql shell脚本,MySQL启动成功(当它被杀死时)。

然而,当我使用 cron 作业安排它时,MySQL 没有启动。 日志打印正确(这意味着我的 cron 成功运行了计划的脚本,但是 MySQL 并未重新启动)。

crontab -l显示:

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

我从 URL 中发现,我们应该提供绝对路径,以便通过 cron 等调度程序重新启动 MySQL。但是,这对我来说不起作用。

谁能帮帮我吗!

谢谢。

答案1

有一个名为 monit 的服务可以尽可能轻松地完成此任务。您可以为任何服务配置它,以便在某些条件下重新启动该服务,并且如果条件不成立,它可以提醒您。 监控

相关内容