我有这个脚本,我用它来设置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
>使用以下命令编辑root crontab文件:
sudo crontab -e
*/1 * * * * /path/to/script
>注意:我已经设置了每分钟的cron作业,但您可以根据需要或您认为更好的方式进行更改.从这个意义上看http://en.wikipedia.org/wiki/Cron.