判断mysql是否正常的几种方法

#################################

方法1:看端口

netstat -lntup|grep 3306|wc -l

lsof -i :3306 |wc -l

远程:

/telnet/nc/nmap

#################################

方法2:看进程

ps -ef |grep mysqld|wc -l

#################################

方法3:进入mysql 看版本

[root@LAMP ~]# mysql -uroot -e "select version();"

+-----------+

| version() |

+-----------+

| 5.1.72    |

+-----------+

[root@LAMP ~]# echo $?

0

[root@LAMP ~]# 

mysql -uroot -e "select version();" &>1 >> /dev/null ; echo $? 

#################################

方法4:让开发写java或者php等程序监控

#################################

方法5:使用上面4中监控方法的组合


######################################

######################################

 脚本1

 [root@LAMP script]# cat mysqlif.sh 

#!/bin/sh

port=`netstat -lnt|grep 3306|wc -l`

if [ $port -ne 1 ]

   then

   echo "MySQL isn't running."

   /etc/init.d/mysqld start

   echo "MySQL is running."

else

   echo "MySQL is running."

fi

[root@LAMP script]#

######################################

######################################

脚本2

[root@LAMP script]# cat mysqlif.sh 

#!/bin/sh

#port=`netstat -lnt|grep 3306|wc -l`

proc=`ps -ef |grep mysqld|grep -v grep |wc -l`

if [ $proc -lt 1 ]

   then

   echo "MySQL isn't running."

   /etc/init.d/mysqld start

   echo "MySQL is running."

else

   echo "MySQL is running."

fi

[root@LAMP script]# 

######################################

######################################

脚本3  推荐方法

[root@LAMP script]# cat mysqlif.sh 

#!/bin/sh

#port=`netstat -lnt|grep 3306|wc -l`

#proc=`ps -ef |grep mysqld|grep -v grep |wc -l`

mysql -uroot -e "select version();" &>1 >> /dev/null  

#mysql -uroot -ppassword -e "select version();" &>1 >> /dev/null

num=`echo $?`

if [ $num -ne 0 ]

   then

   echo "MySQL isn't running."

   /etc/init.d/mysqld start

   echo "MySQL is running."

else

   echo "MySQL is running."

fi

[root@LAMP script]# 

######################################

######################################

脚本4

[root@LAMP script]# cat mysqlif.sh 

#!/bin/sh

pidfile=/application/mysql5.1.72/data/LAMP.pid

mysql_path=/application/mysql5.1.72/bin

datadir=/application/mysql5.1.72/data

if [ ! -f $pidfile ]

  then

   $mysql_path/mysqld_safe --datadir=$datadir --pid-file=$pidfile & 2>&1 /dev/null

  else

   echo "MySQL is running."

fi

[root@LAMP script]# 


#################### ###############

监控web服务的手段

1.本地:ss、netstat、lsof

  远程:telnet、nmap、nc

  nmap 10.0.0.3 -p 80 |grep open |wc -l


2.本地进程数

   ps -ef |grep httpd|grep -v grep

3.curl -s -I 看返回值是否为200

  wget 

  

  curl -I -s www.baidu.com|awk -F' ' 'NR==1{print $2}'

  curl -I -s -w "%{http_code}%" -o /dev/null  www.baidu.com 

  wget --spider --timeout=10 --tries=5 10.0.0.3 &>/dev/null ;echo $?

4、写php、java监控程序,模拟用户访问,访问固定的测试页面

#################################################

附带

[root@LAMP script]# cat webjk.sh    

#!/bin/sh

#status=`curl -I -s -w "%{http_code}%" -o /dev/null  www.baidu.com`

. /etc/init.d/functions

web(){

status=`curl -I -s $1 |awk  'NR==1{print $(NF-1)}'`

if [ -z $status ]

  then

     action "$1 is fail !" /bin/false

  else

     action "$1 is OK !" /bin/true

fi

}

web $1

[root@LAMP script]#

====================================================

[root@LAMP script]# sh webjk.sh www.baidu.com

www.baidu.com is OK !                                      [  OK  ]

[root@LAMP script]# sh webjk.sh www.baidu.com1

www.baidu.com1 is fail !                                   [FAILED]

[root@LAMP script]# sh webjk.sh t.tt          

t.tt is OK !                                               [  OK  ]

[root@LAMP script]# cat webjk.sh    

#####################################################