我有这个脚本,我正在使用它来设置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
问题是它在每次执行cron作业时都会重新启动MySQL。即使服务器正在运行,它也会重新启动MySQL服务,脚本中的更正是这样做。
为什么在shebang前面有一个“ \”?如果有它可以防止其看起来像评论,那么就没有必要了。 Shebangs当Bash特殊处理等等,在它们不需要被转义,因为他们不是在这个意义上评论说,评论是一段代码,该代码也没有评估在所有。
—
Alexej Magura 2014年
这是我使用一些可用脚本尝试过的第一个shell脚本,我刚刚对其进行了修改。对语法了解不多。问题仍然存在,每个CRON作业执行时mysql重新启动@AlexejMagura
—
Straw Hat
尝试这样的操作:
—
Alexej Magura 2014年
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
它是启动一个子外壳程序,service mysql status | grep 'mysql start/running' &> /dev/null
运行该子外壳程序,然后将该子外壳程序的返回(退出)状态传递给if语句,然后再检查它是否为非零值,如果它不是非零,那么它将运行该then
块。
mysql不会将其进程pid写入pid文件吗?如果这样做,您可以将其用作检查mysql状态的另一种方法
—
Flint 2014年