1)端口判断法==>仅适合数据库本地使用
法1:if条件判断方法
[root@oldboy scripts]# cat check_db01.sh #!/bin/sh #created by oldboy #mail:oldboy521@gmail.com PortNum=`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/functions PortNum=`netstat -lnt|grep 3306|wc -l` if [ $PortNum -eq 1 ] then action "mysqld is running." /bin/true else action "mysqld is stoped." /bin/false fi
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.com PortNum=`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)访问方法==>适合在远端服务器使用(本地也适合)
[root@oldboy scripts]# cat check_db04.sh #!/bin/sh #created by oldboy #mail:oldboy521@gmail.com mysql -S /data/3306/mysql.sock -e "select version();" >/dev/null 2>&1 if [ $"mysqld is running." else echo "mysqld is stoped." fi
技巧:
1)使用web 连接账号模拟访问。
法3:模拟用户使用程序URL的方式判断
<"mysql successful by oldboy !";
  }else{
   echo mysql_error();
  }
?>
以上的方法仅仅是简单的判断,那么下面给出一个集判断,处理,及报警于一身的较专业的mysql检查处理脚本。
4)较专业mysql检查处理脚本的解决方案
#!/bin/bash 
#created by oldboy QQ 49000448 
#date:20100918 
MYUSER=root 
MYPASS="oldboy" 
MYSOCK=/data/3306/mysql.sock 
MySQL_STARTUP="/data/3306/mysql" 
LOG_PATH=/tmp 
LOG_FILE=${LOG_PATH}/mysqllogs_`date +%F`.log 
MYSQL_PATH=/usr/local/mysql/bin 
MYSQL_CMD="$MYSQL_PATH/mysql -u$MYUSER -p$MYPASS -S $MYSOCK" 
#→全变量定义方式,显得更专业。 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $"MySQL is running! " 
exit 0 
else 
$MySQL_STARTUP start >$LOG_FILE#→日志也是变量。 
sleep 5; 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $"select version();" >/dev/null 2>&1 && Status="restarted" || Status="unknown"#→这个逻辑更准确。 
echo "MySQL status is $Status" $LOG_FILE 
mail -s "MySQL status is $Status" 31333741@qq.com < $LOG_FILE 
#→把上面的Status作为结果标题传给邮件,当然你可以做短信,语音通话报警。 
fi 
exit 
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
 - 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
 - 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
 - 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
 - 群星《2024好听新歌42》AI调整音效【WAV分轨】
 - 王思雨-《思念陪着鸿雁飞》WAV
 - 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
 - 李健《无时无刻》[WAV+CUE][590M]
 - 陈奕迅《酝酿》[WAV分轨][502M]
 - 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
 - 群星《吉他王(黑胶CD)》[WAV+CUE]
 - 齐秦《穿乐(穿越)》[WAV+CUE]
 - 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
 - 邝美云《邝美云精装歌集》[DSF][1.6G]
 - 吕方《爱一回伤一回》[WAV+CUE][454M]