最近发现服务器上的mysql经常自己就听了,每次都得重启才能正常使用。于是考虑写个脚本,用来定期定时检测mysql的状态,当发现stop状态,就自动重启。省时省力,哈。
个人原创,版权所有,转载请注明原文出处 并保留原文链接:
http://www.embbnux.com/2014/07/08/shell_listen_mysq_auto_restart/
一 首先是shell脚本,Linux上还是shell比较顺手
mysql_listen.sh:
#!/bin/bash pgrep -x mysqld &> /dev/null if [ $? -ne 0 ] then echo "At time: `date` :MySQL is stop .">> /var/log/mysql_messages service mysql start #echo "At time: `date` :MySQL server is stop." else echo "MySQL server is running ." fi
该脚本实现监测mysql的状态,如果发现mysql停止,则自动启动,并填写停止时间
二 使脚本每隔一定的时间自动运行
linux上定期执行脚本用的是cron进程
命令:
crontab -e #第一次使用cron,得用序号选择编辑器
在最后一行加入:
*/5 * * * * /your_dir/mysql_listen.sh
*/5表示分钟能被5整除,及每5分钟执行一次,后面4个*号,分别表示 小时,日,月,星期。
保存后退出。
重启cron就可以了
service cron restart
这样就会每隔5分钟,执行一次检测mysql的脚本。
ubuntu 需要这样的吧
*/5 * * * * sh /your_dir/mysql_listen.sh
确实,这个文章有纰漏,还待修订
应该是./*.sh执行sh脚本或者sh /*.sh,作者写进计划任务的只是一个路径而已
哈哈,编辑有误
对了,还有个问题想问下站长,就是你的这个wp站点是怎么在阿里云上配置的https加密访问的呀,有没有教程参考下,谢谢啦
你看这个Let’s Encrypt网站启用https以及nginx配置安全优化
刚好也碰到这个问题了。学习了。
#!/bin/bash
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
echo “At time: `date ‘+%Y-%m-%d %H:%M:%S’` :MySQL is stop .” >> /data/wwwroot/mmwzz/logs/db_error.log
sudo service mysqld start
if [ $? -ne 0 ]
then
echo “At time: `date ‘+%Y-%m-%d %H:%M:%S’` :MySQL start failed .” >> /data/wwwroot/mmwzz/logs/db_error.log
else
echo “At time: `date ‘+%Y-%m-%d %H:%M:%S’` :MySQL start success .” >> /data/wwwroot/mmwzz/logs/db_error.log
fi
else
echo “At time: `date ‘+%Y-%m-%d %H:%M:%S’` :MySQL is running .” >> /data/wwwroot/mmwzz/logs/db_error.log
fi
问题:sudo service mysqld start 这条没执行成功,请教一下,什么原因
请问具体报错是什么