做图片推广的网站有哪些,品牌整合推广,国家重点高新技术企业名单,给网站做维护是什么工作前言最近发现MySQL服务隔三差五就会挂掉#xff0c;导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL#xff0c;在做爬虫存取一些资料的时候也是基于MySQL#xff0c;数据量一大了#xff0c;MySQL它就有点受不了了#xff0c;时不时会崩掉#xff0c;虽然我自…前言最近发现MySQL服务隔三差五就会挂掉导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL在做爬虫存取一些资料的时候也是基于MySQL数据量一大了MySQL它就有点受不了了时不时会崩掉虽然我自己有网站监控和邮件通知但是好多时候还是需要我来手动连接我的服务器重新启动一下我的MySQL这样简直太不友好了所以我就觉定自己写个脚本定时监控它如果发现它挂掉了就重启它。 好了闲言碎语不多讲开始我们的配置之旅。 运行环境Ubuntu Linux 14.04编写Shell脚本首先我们要编写一个shell脚本脚本主要执行的逻辑如下 显示mysqld进程状态如果判断进程未在运行那么输出日志到文件然后启动mysql服务如果进程在运行那么不执行任何操作可以选择性输出监测结果。 可能大家对于shell脚本比较陌生在这里推荐官方的shell脚本文档来参考一下 Ubuntu Shell 编程基础 shell脚本的后缀为sh在任何位置新建一个脚本文件我选择在 /etc/mysql 目录下新建一个 listen.sh 文件。 执行如下命令123cd /etc/mysqltouch listen.shvi listen.sh进入到vi中我们添加如下脚本内容123456789#!/bin/bashpgrep mysqld /dev/nullif [ $? -gt 0 ]thenecho date mysql is stopservice mysql startelseecho date mysql runningfi其中 pgrep mysqld 是监测mysqld服务的运行状态 /dev/null 是将其结果输出到空文件也就是不保存输出信息 $? 是拿到上一条命令的运行结果-gt 0 是判断是否大于0后面则是输出时间到日志文件然后启动mysql否则不启动mysql 保存好了那么我们执行如下的命令来测试一下。 贴心的命令文字版本1234567891011121314rootiZ28uogb3laZ:/etc/mysql# vi listen.shrootiZ28uogb3laZ:/etc/mysql# pgrep mysqld3359rootiZ28uogb3laZ:/etc/mysql# chmod 777 listen.shrootiZ28uogb3laZ:/etc/mysql# ./listen.shSun Aug 16 16:44:58 CST 2015 mysql runningrootiZ28uogb3laZ:/etc/mysql# sudo service mysql stopmysql stop/waitingrootiZ28uogb3laZ:/etc/mysql# ./listen.shSun Aug 16 16:45:17 CST 2015 mysql is stopmysql start/running, process 4084rootiZ28uogb3laZ:/etc/mysql# ./listen.shSun Aug 16 16:45:24 CST 2015 mysql runningrootiZ28uogb3laZ:/etc/mysql#嗯编辑完了.sh文件之后我们首先要对其进行授权增加可执行的权限。1sudo chmod 777 listen.sh然后运行脚本测试一下显示mysql正在运行。把mysql关掉运行脚本便会检测到mysql已关闭然后重新启动了mysql再次运行便会发现mysql正常运行了。 注这里我比较纳闷shell脚本中pgrep mysqld的返回结果是什么。为什么它大于0便代表mysql服务挂掉了呢感觉逻辑有点是相反的不过实测可用有效。如果大家明白为什么非常希望您可以给我一个解释。修改日志输出好接下来我们把输出的内容保存到日志里。修改脚本文件如下123456789#!/bin/bashpgrep mysqld /dev/nullif [ $? -gt 0 ]thenecho date mysql is stop /var/log/mysql_listen.logservice mysql startelseecho date mysql running /var/log/mysql_listen.logfi这样每执行一次脚本输出结果都会被保存到 /var/log/mysql_listen.log 中了。添加定时任务好了脚本可以顺利执行了那么我们就需要定时调用一下这个脚本来运行了我们需要用到 cron。 首先我们需要编辑一下corn调度表格命令如下1crontab -e如果你是第一次编辑这个他会让你选择文件打开方式随便选一个数字就好了。 比如我们用GNU打开的我们就在它的最后一行添加下面的一句话即可。 、 文字版本1*/5 * * * * /etc/mysql/mysql_listen.sh/5代表五分钟执行一次后面的四个点依次代表了小时日月星期。如果想要时间长一些比如一小时调度一次那就设置一下后面第一个*就好了。 好保存一下重启cron服务。1service cron restart嗯调度任务已经添加进去了这样每五分钟系统就会调用一下刚才写的那个脚本。 过一段时间我们来看一下运行效果嗯监控跑的很顺利呐。 文字版本123456789101112131415Sun Aug 16 15:39:12 CST 2015 mysql runningSun Aug 16 15:40:01 CST 2015 mysql runningSun Aug 16 15:45:02 CST 2015 mysql runningSun Aug 16 15:50:01 CST 2015 mysql runningSun Aug 16 15:55:01 CST 2015 mysql runningSun Aug 16 16:00:01 CST 2015 mysql runningSun Aug 16 16:05:01 CST 2015 mysql runningSun Aug 16 16:10:01 CST 2015 mysql runningSun Aug 16 16:15:01 CST 2015 mysql runningSun Aug 16 16:20:01 CST 2015 mysql runningSun Aug 16 16:25:01 CST 2015 mysql runningSun Aug 16 16:30:01 CST 2015 mysql runningSun Aug 16 16:35:01 CST 2015 mysql runningSun Aug 16 16:40:01 CST 2015 mysql runningSun Aug 16 16:51:04 CST 2015 mysql running哈哈是不是五分钟监测了一次呢大功告成。后记这样我们就实现了五分钟定时检测MySQL进程服务妈妈再也不用担心我的网站会宕掉啦。 如有问题欢迎留言交流谢谢啦。