话说以前(→_→至少有两个多月了)有一段时间,服务器负载过大导致MySQL服务被kill,作为一个具有灵性的码农,怎么能每天刷自己的博客手动重启呢?
恰巧近几天学习了点shell编程,在配合到cron,简要的写一个监测MySQL运行状态,如果挂了就自动开启的脚本!
下面上代码:
#!/bin/sh pidof mysqld >/dev/null if [ $? -eq 0 ] then echo "It is running." else echo "At `date` MySQL Server was stopped">> /home/mysql_log service mysql start fi
下面是对代码的解释:
pidof mysqld可以得出mysql的PID,如果mysql进程(mysqld)不存在,就不会有结果。
>重定向到黑洞里
$?的意思是上一个命令的退出值,通常来说0代表成功,1代表通用未知错误。所以在这里,假如mysqld不存在,那么$?就会是1
-eq是等于,shell执行$?是否等于0的判断,等于就是在运行,不等于就是没运行。
用echo和反引号并重定向到文件写日志,>代表覆写,>>代表追加。后面日志路径大家伙看着改
将这段代码保存为restart_mysql.sh放到某个目录,俺就给放到/home啦
,然后终端crontab –e,最后一行添加如下内容
意思是每隔两分钟运行一遍脚本。
*/2 * * * * sh /home/restart_mysql.sh
俺这人比较懒,就没给脚本加上可执行权限,所以直接以"传参"的形式给sh了。
重启cron服务
service cron restart
亲测好用
如果你真的是懒得不能再懒了,那么就执行下面这句吧...root权限哦。当然了我其实是不太推荐的啦。
wget http://7xljcn.com1.z0.glb.clouddn.com/restart_mysql_installation.sh && sh ./restart_mysql_installation.sh