Str*_*Hat 13 mysql bash scripts cron
我有这个脚本,我用它来设置 CRON 作业来执行这个脚本,所以它可以检查 MySQL 服务是否正在运行;如果没有,则重新启动 MySQL 服务:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Run Code Online (Sandbox Code Playgroud)
我已将 cron 作业设置为。
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
然后补充说,
*/1 * * * * /home/ubuntu/mysql-check.sh
Run Code Online (Sandbox Code Playgroud)
问题是它在每个 cron 作业执行时重新启动 MySQL。即使服务器正在运行它也会重新启动 MySQL 服务,脚本中的更正是什么。
Rad*_*anu 20
我怀疑您设置了 cron 作业以在您的 crontab 文件中执行此脚本,而不是在根 crontab 文件中。这是不正确的,因为如果您不service mysql status以 root 身份运行,mysql将无法识别该服务。
所以,修改脚本如下:
#!/bin/bash
if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]]
then
/usr/sbin/service mysql start
fi
Run Code Online (Sandbox Code Playgroud)
确保它是可执行的:
chmod +x /path/to/script
Run Code Online (Sandbox Code Playgroud)
然后在根 crontab 中添加一个新条目,如下所示:
使用以下命令编辑根 crontab 文件:
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)并将以下行添加到文件中:
*/1 * * * * /path/to/script
Run Code Online (Sandbox Code Playgroud)注意:我已经为每分钟设置了 cron 作业,但是您可以根据自己的意愿或认为更好的方式进行更改。从这个意义上说,请参阅http://en.wikipedia.org/wiki/Cron。