原創模範生
2015-10-15 17:21:02
2783人閱讀
監控mysql服務是否正常,通常的思路為:檢查3306埠是否啟動,ps檢視mysqld程序是否啟動,命令列登入mysql執行語句返回結果,php或jsp程式檢測(需要開發人員開發程式)等等;
方法1:監聽3306埠
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
#written by mofansheng@2015-10-15
port=`
netstat
-nlt|
grep
3306|
wc
-l`
if
[ $port -
ne
1 ]
then
/etc/init
.d
/mysqld
start
else
echo
"mysql is running"
fi
方法2:檢視mysqld程序
注意注意:如果使用程序過濾的話,指令碼名稱如果裡面包含mysql的話,指令碼執行有坑,切記!!!因為會把指令碼也grep了一次,導致結果不準確;
12
3
4
5
6
7
8
9
10
11
[root@localhost baby]
# cat check_mysql.sh
#!/bin/bash
#written by mofansheng@2015-10-15
process=`
ps
-ef |
grep
mysql|
grep
-
v
grep
|
wc
-l`
if
[ $process -
ne
2 ]
then
/etc/init
.d
/mysqld
start
else
echo
"mysql is running"
fi
執行結果如下:
[root@localhost baby]# sh check_mysql.sh
starting mysql success!
改名之後執行為正常結果:
[root@localhost baby]#mv check_mysql.sh check_db.sh
[root@localhost baby]# sh check_db.sh
mysql is running
方法3:雙保險,程序和埠都成功才算mysql服務正常
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
#written by mofansheng@2015-10-15
port=`
netstat
-nlt|
grep
3306|
wc
-l`
process=`
ps
-ef |
grep
mysql|
grep
-
v
grep
|
wc
-l`
if
[ $port -
eq
1 ] && [ $process -
eq
2 ]
then
echo
"mysql is running"
else
/etc/init
.d
/mysqld
start
fi
4:使用客戶端登入mysql執行命令,檢視返回結果測試服務是否啟動,理論上此方法最可靠。
1
2
3
4
5
6
7
8
9
10
11
[root@localhost baby]
# cat check_db_client.sh
#!/bin/bash
#written by mofansheng@2015-10-15
mysql -uroot -p123456 -e
"select version();"
&>
/dev/null
if
[ $? -
ne
0 ]
then
/etc/init
.d
/mysqld
start
else
echo
"mysql is running"
fi
執行結果如下:
[root@localhost baby]# sh check_db_client.sh
mysql is running
mysql 監控指令碼 監控mysql狀態指令碼
監控mysql狀態,發現宕後,自動重啟,每秒檢查一次。check.sh bin bash while true do bin sleep 1 sh mysql status.sh done chengkill bin sh pid kill thread for chenglee if filefo...
shell學習十四 編寫監控mysql指令碼
shell編寫監控mysql指令碼 判斷服務存活方法 1 埠 root node01 netstat lntup grep 330 tcp 0 0 0.0.0.0 3306 0.0.0.0 listen 127641 mysqld 2 程序判斷 root node01 ps ef grep mysq...
shell監控指令碼 監控CDN 首頁
注意 請先參考 shell監控指令碼 準備工作,監控指令碼在 rhel5 下測試正常,其它版本的linux 系統請自行測試 監控cdn 首頁 cat chk cdn.sh bin bash script name chk cdn.sh check cdn index.html domain name...