自动化脚本监视系统服务mysqld、httpd的运行状态

前言

最近发现MySQL服务隔三差五就会挂掉,导致我的网站无法正常运作。所以,我就觉定自己写个脚本,定时监控它,如果发现它挂掉了就重启它。

运行环境:Centos 7

编写Shell脚本

首先,我们要编写一个shell脚本,脚本主要执行的逻辑如下:

显示mysqld进程状态,如果判断进程未在运行,那么输出日志到文件,然后启动mysql服务,如果进程在运行,那么不执行任何操作,可以选择性输出监测结果。

可能大家对于shell脚本比较陌生,在这里推荐官方的shell脚本文档来参考一下

shell脚本的后缀为sh,在任何位置新建一个脚本文件,我选择在 /root  目录下新建一个 listen.sh 文件。

执行如下命令:

其中 pgrep mysqld 是监测mysqld服务的运行状态,&> /dev/null 是将其结果输出到空文件,也就是不保存输出信息

$? 是拿到上一条命令的运行结果, -ne 0 是判断是否不等于0,后面则是输出时间到日志文件,然后启动mysql,否则不启动mysql

插一句:

-eq //等于

-ne //不等于

-gt //大于 (greater )

-lt //小于 (less)

-ge //大于等于

-le //小于等于

命令的逻辑关系:

linux 中 命令执行状态:0 为真,其他为假

逻辑与: &&
第一个条件为假时,第二条件不用再判断,最终结果已经有;
第一个条件为真时,第二条件必须得判断;
逻辑或: ||
逻辑非: !

保存好。编辑完了.sh文件之后,我们首先要对其进行授权,增加可执行的权限。

 

如果执行不到位,运行shell脚本提示No such file or directory错误的解决办法

原因:在windows中写好shell脚本测试正常,但是上传到 Linux 上以脚本方式运行命令时提示No such file or directory错误,那么一般是文件格式是dos格式的缘故,改成unix 格式即可。

用vim打开该sh文件,输入:
:set ff
回车,显示fileformat=dos,重新设置下文件格式:
:set ff=unix
保存退出:
:wq
再执就可以了。

最后添加定时任务

好了,脚本可以顺利执行了,那么我们就需要定时调用一下这个脚本来运行了,我们需要用到 cron。

首先我们需要编辑一下corn调度表格,命令如下:

如果你是第一次编辑这个,他会让你选择文件打开方式,随便选一个数字就好了。

比如我们用GNU打开的,我们就在它的最后一行添加下面的一句话即可。

文字版本:

/5代表五分钟执行一次,后面的四个点依次代表了,小时,日,月,星期。如果想要时间长一些,比如一小时调度一次,那就设置一下后面第一个*就好了。

好,保存一下,重启cron服务。

嗯,调度任务已经添加进去了,这样,每五分钟系统就会调用一下刚才写的那个脚本。

过一段时间,我们来看一下运行效果,嗯,监控跑的很顺利呐。

哈哈,是不是五分钟监测了一次呢?大功告成。

 

问题处理:

执行  service cron restart时候提示报错,是因为centos 7 服务启动命令有点小变化。

执行命令使用:
#/bin/systemctl start crond.service  即可

后记

这样,我们就实现了五分钟定时检测MySQL进程服务,妈妈再也不用担心我的网站会宕掉啦。

 

评论已关闭

网站地图