微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – Shell脚本问题: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 job.

sudo crontab -e

然后补充说,

*/1 * * * * /home/ubuntu/MysqL-check.sh

问题是它在每个cron作业执行时重启MysqL.
即使服务器正在运行,它也会重启MysqL服务
什么是脚本中的更正来做到这一点.

解决方法:

我怀疑您设置了cron作业以在crontab文件中执行此脚本,而不是在根crontab文件中.这是不正确的,因为如果您不以root身份运行服务MysqL状态,则无法识别MysqL服务.

因此,修改脚本如下:

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

确保它是可执行的:

chmod +x /path/to/script

然后在根crontab中添加一个新条目,如下所示:

>使用以下命令编辑root crontab文件

sudo crontab -e

>并将以下行添加文件中:

*/1 * * * * /path/to/script

>注意:我已经设置了每分钟的cron作业,但您可以根据需要或您认为更好的方式进行更改.从这个意义上看http://en.wikipedia.org/wiki/Cron.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐