ubuntu修改时间重启后失效_腾讯云Ubuntu下定时监测MySQL进程终止后自动重启的方法...

本文介绍了在Ubuntu 14.04上编写shell脚本定时监测MySQL服务,如果服务挂掉则自动重启的过程。通过创建listen.sh脚本,利用cron定时任务每五分钟检查一次MySQL进程,确保服务稳定运行。
摘要由CSDN通过智能技术生成

fb7466c3ae0e327038a0488692f8db5d.png

06c859bc8b6d05c2ff3eb2fc740a9ff3.png

作者:崔庆才

前言

最近发现MySQL服务隔三差五就会挂掉,导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL,在做爬虫存取一些资料的时候也是基于MySQL,数据量一大了,MySQL它就有点受不了了,时不时会崩掉,虽然我自己有网站监控和邮件通知,但是好多时候还是需要我来手动连接我的服务器重新启动一下我的MySQL,这样简直太不友好了,所以,我就觉定自己写个脚本,定时监控它,如果发现它挂掉了就重启它。

好了,闲言碎语不多讲,开始我们的配置之旅。

运行环境:腾讯云 Ubuntu Linux 14.04

45508db3b4d963fd918b2fafa65b7d8b.png

编写Shell脚本

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

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

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

Ubuntu Shell 编程基础

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

执行如下命令:

cd /etc/mysql
touch listen.sh
vi listen.sh

进入到vi中,我们添加如下脚本内容:

#!/bin/bash
pgrep mysqld &> /dev/nullif [ $? -gt 0 ]then
echo "`date` mysql is stop"service mysql startelseecho "`date` mysql running"fi

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

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

保存好了,那么我们执行如下的命令,来测试一下。

1a8688f4c27f8e22299e93f88385aaee.png

贴心的命令文字版本:

root@iZ28uogb3laZ:/etc/mysql# vi listen.sh
root@iZ28uogb3laZ:/etc/mysql# pgrep mysqld3359root@iZ28uogb3laZ:/etc/mysql# chmod 777 listen.sh
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:44:58 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql# sudo service mysql stop
mysql stop/waiting
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:17 CST 2015 mysql is stop
mysql start/running, process 4084root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:24 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql#

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

sudo chmod 777 listen.sh

然后运行脚本测试一下,显示mysql正在运行。把mysql关掉,运行脚本,便会检测到mysql已关闭,然后重新启动了mysql,再次运行,便会发现mysql正常运行了。

修改日志输出

好,接下来我们把输出的内容保存到日志里。修改脚本文件如下

#!/bin/bash
pgrep mysqld &> /dev/nullif [ $? -gt 0 ]then
echo "`date` mysql is stop" >> /var/log/mysql_listen.log
service mysql startelseecho "`date` mysql running" >> /var/log/mysql_listen.log
fi

这样,每执行一次脚本,输出结果都会被保存到 /var/log/mysql_listen.log 中了。

添加定时任务

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

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

crontab -e

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

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

0760ccf57935588c539d85722c299fbd.png

文字版本:

*/5 * * * * /etc/mysql/mysql_listen.sh

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

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

service cron restart

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

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

889265fcf266d9b11434e8719568ce63.png

内容:

Sun Aug 16 15:39:12 CST 2015 mysql running
Sun Aug 16 15:40:01 CST 2015 mysql running
Sun Aug 16 15:45:02 CST 2015 mysql running
Sun Aug 16 15:50:01 CST 2015 mysql running
Sun Aug 16 15:55:01 CST 2015 mysql running
Sun Aug 16 16:00:01 CST 2015 mysql running
Sun Aug 16 16:05:01 CST 2015 mysql running
Sun Aug 16 16:10:01 CST 2015 mysql running
Sun Aug 16 16:15:01 CST 2015 mysql running
Sun Aug 16 16:20:01 CST 2015 mysql running
Sun Aug 16 16:25:01 CST 2015 mysql running
Sun Aug 16 16:30:01 CST 2015 mysql running
Sun Aug 16 16:35:01 CST 2015 mysql running
Sun Aug 16 16:40:01 CST 2015 mysql running
Sun Aug 16 16:51:04 CST 2015 mysql running

结语

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

ea1cee7e4d19ac05dc601e27581f4a59.png往期推荐 78d85e0fc159a49cf1107b8e24890053.png自建SQL Server迁移云SQL Server过程 62ba1526bb7e144e4261630bc7b7107d.png零基础入门MySQL(数据库) 3a659edfba3a31b58b7c55b086c616a5.png数据库千千万,教你怎么选择数据库 c188f55dab76f8178c601d79fb27e661.png扫码关注我们

多树云服   

专注企业信息化云服务 73c1c4234fc507014891361ebd1dc22f.png 179bd562d88265a92781ba34341b9891.gif都在看点点点,赞和在看都在这儿! 9e9cd9dcebc25e0ce259390afd980313.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值