shell脚本实现定期检测mysql状态-停止自动重启

最近发现服务器上的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的脚本。

 

8 thoughts on “shell脚本实现定期检测mysql状态-停止自动重启”

  1. #!/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 这条没执行成功,请教一下,什么原因

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.