首页 > 系统 > Linux > 正文

实战模拟监控MySQL服务shell脚本小结

2019-10-26 18:48:16
字体:
来源:转载
供稿:网友

1)端口判断法==>仅适合数据库本地使用

法1:if条件判断方法

[root@oldboy scripts]# cat check_db01.sh#!/bin/sh#created by oldboy#mail:oldboy521@gmail.comPortNum=`netstat -lnt|grep 3306|wc -l`if [ $PortNum -eq 1 ]then echo "mysqld is running."else echo "mysqld is stoped."fi

法2:条件表达式用法

[root@oldboy scripts]# cat check_db01_1.sh#!/bin/sh#created by oldboy#mail:oldboy521@gmail.com PortNum=`netstat -lnt|grep 3306|wc -l`#PortNum=`nmap 10.0.0.189 -p 3306|grep open|wc -l`[ $PortNum -eq 1 ] && echo "mysqld is running."||echo "mysqld is stoped."

法3:使用系统函数显示法

[root@oldboy scripts]# cat check_db01_2.sh#!/bin/sh#created by oldboy#mail:oldboy521@gmail.com#load functions[ -f /etc/init.d/functions ] && . /etc/init.d/functionsPortNum=`netstat -lnt|grep 3306|wc -l`if [ $PortNum -eq 1 ]then action "mysqld is running." /bin/trueelse action "mysqld is stoped." /bin/falsefi

2)进程加端口判断法==>仅适合数据库本地使用

[root@oldboy scripts]# cat check_db02.sh#!/bin/sh#created by oldboy#mail:oldboy521@gmail.com PortNum=`netstat -lnt|grep 3306|wc -l`ProcessNum=`ps -ef|grep mysql|grep -v grep| wc -l`#echo $PortNum $ProcessNum#exit 1 if [ $PortNum -eq 1 -a $ProcessNum -eq 2 ]then echo "mysqld is running."else echo "mysqld is stoped."fi

提示:如果不放心还可以同时加上模拟用户访问。

技巧:脚本调试技巧

1)grep过滤的字符串,不要包含在文件名里,例:grep mysql ,文件名为check_mysql.sh 就不太好。比较好的文件名如:
-rw-r--r-- 1 root root  236 Sep  9 22:19 check_db01.sh
-rw-r--r-- 1 root root  293 Sep  9 22:34 check_db02.sh
-rw-r--r-- 1 root root  212 Sep  9 22:49 check_db03.sh
2)当语法没有问题但是结果不正确,可以使用下面的方法排查:
   a)在变量定义的后面打印变量结果,看和实际结果是否一致,如:
     echo $PortNum $ProcessNum
     exit 1
   b) sh -x check_db02.sh的方式,跟踪脚本执行过程,更多的调试方案见后面的SHELL脚本调试精讲。
3)判断远端mysql服务是否正常的方法

法1:端口检查法==>适合在远端服务器使用(本地也适合)

[root@oldboy scripts]# cat check_db03.sh#!/bin/sh#created by oldboy#mail:oldboy521@gmail.comPortNum=`nmap 10.0.0.189 -p 80|grep open|wc -l`if [ $PortNum -eq 1 ]then echo "mysqld is running."else echo "mysqld is stoped."fi

提示:端口的使用方法还有很多种,包括不限于下面地址的3种方法,http://oldboy.blog.51cto.com/2561410/942530
例如:还可以用nagios的check_tcp插件等法。
法2:模拟用户(包括web server)访问方法==>适合在远端服务器使用(本地也适合)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表