linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法
前言
最近發現MySQL服務隔三差五就會掛掉,導致我的網站和爬蟲都無法正常運作。自己的網站是基于MySQL,在做爬蟲存取一些資料的時候也是基于MySQL,數據量一大了,MySQL它就有點受不了了,時不時會崩掉,雖然我自己有網站監控和郵件通知,但是好多時候還是需要我來手動連接我的服務器重新啟動一下我的MySQL,這樣簡直太不友好了,所以,我就覺定自己寫個腳本,定時監控它,如果發現它掛掉了就重啟它。 好了,閑言碎語不多講,開始我們的配置之旅。 運行環境:Ubuntu Linux 14.04
編寫Shell腳本
首先,我們要編寫一個shell腳本,腳本主要執行的邏輯如下: 顯示mysqld進程狀態,如果判斷進程未在運行,那么輸出日志到文件,然后啟動mysql服務,如果進程在運行,那么不執行任何操作,可以選擇性輸出監測結果。 可能大家對于shell腳本比較陌生,在這里推薦官方的shell腳本文檔來參考一下 Ubuntu Shell 編程基礎 shell腳本的后綴為sh,在任何位置新建一個腳本文件,我選擇在 /etc/mysql 目錄下新建一個 listen.sh 文件。 執行如下命令:
1
2
3
cd /etc/mysql
touch listen.sh
vi listen.sh
進入到vi中,我們添加如下腳本內容:
1
2
3
4
5
6
7
8
9
#!/bin/bash
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop"
service mysql start
else
echo "`date` mysql running"
fi
其中 pgrep mysqld 是監測mysqld服務的運行狀態,&> /dev/null 是將其結果輸出到空文件,也就是不保存輸出信息 $? 是拿到上一條命令的運行結果,-gt 0 是判斷是否大于0,后面則是輸出時間到日志文件,然后啟動mysql,否則不啟動mysql 保存好了,那么我們執行如下的命令,來測試一下。 貼心的命令文字版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@iZ28uogb3laZ:/etc/mysql# vi listen.sh
root@iZ28uogb3laZ:/etc/mysql# pgrep mysqld
3359
root@iZ28uogb3laZ:/etc/mysql# chmod 777 listen.sh
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:44:58 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql# sudo service mysql stop
mysql stop/waiting
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:17 CST 2015 mysql is stop
mysql start/running, process 4084
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:24 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql#
嗯,編輯完了.sh文件之后,我們首先要對其進行授權,增加可執行的權限。
1
sudo chmod 777 listen.sh
然后運行腳本測試一下,顯示mysql正在運行。把mysql關掉,運行腳本,便會檢測到mysql已關閉,然后重新啟動了mysql,再次運行,便會發現mysql正常運行了。 注:這里我比較納悶shell腳本中pgrep mysqld的返回結果是什么。為什么它大于0便代表mysql服務掛掉了呢?感覺邏輯有點是相反的,不過實測可用有效。如果大家明白為什么,非常希望您可以給我一個解釋。
修改日志輸出
好,接下來我們把輸出的內容保存到日志里。修改腳本文件如下
1
2
3
4
5
6
7
8
9
#!/bin/bash
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop" >> /var/log/mysql_listen.log
service mysql start
else
echo "`date` mysql running" >> /var/log/mysql_listen.log
fi
這樣,每執行一次腳本,輸出結果都會被保存到 /var/log/mysql_listen.log 中了。
添加定時任務
好了,腳本可以順利執行了,那么我們就需要定時調用一下這個腳本來運行了,我們需要用到 cron。 首先我們需要編輯一下corn調度表格,命令如下:
1
crontab -e
如果你是第一次編輯這個,他會讓你選擇文件打開方式,隨便選一個數字就好了。 比如我們用GNU打開的,我們就在它的最后一行添加下面的一句話即可。 、 文字版本:
1
*/5 * * * * /etc/mysql/mysql_listen.sh
/5代表五分鐘執行一次,后面的四個點依次代表了,小時,日,月,星期。如果想要時間長一些,比如一小時調度一次,那就設置一下后面第一個*就好了。 好,保存一下,重啟cron服務。
1
service cron restart
嗯,調度任務已經添加進去了,這樣,每五分鐘系統就會調用一下剛才寫的那個腳本。 過一段時間,我們來看一下運行效果,嗯,監控跑的很順利吶。 文字版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sun Aug 16 15:39:12 CST 2015 mysql running
Sun Aug 16 15:40:01 CST 2015 mysql running
Sun Aug 16 15:45:02 CST 2015 mysql running
Sun Aug 16 15:50:01 CST 2015 mysql running
Sun Aug 16 15:55:01 CST 2015 mysql running
Sun Aug 16 16:00:01 CST 2015 mysql running
Sun Aug 16 16:05:01 CST 2015 mysql running
Sun Aug 16 16:10:01 CST 2015 mysql running
Sun Aug 16 16:15:01 CST 2015 mysql running
Sun Aug 16 16:20:01 CST 2015 mysql running
Sun Aug 16 16:25:01 CST 2015 mysql running
Sun Aug 16 16:30:01 CST 2015 mysql running
Sun Aug 16 16:35:01 CST 2015 mysql running
Sun Aug 16 16:40:01 CST 2015 mysql running
Sun Aug 16 16:51:04 CST 2015 mysql running
哈哈,是不是五分鐘監測了一次呢?大功告成。
后記
這樣,我們就實現了五分鐘定時檢測MySQL進程服務,媽媽再也不用擔心我的網站會宕掉啦。 如有問題,歡迎留言交流,謝謝啦。
總結
以上是生活随笔為你收集整理的linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器被手机桥接如何关闭路由器如何关闭桥
- 下一篇: 两个路由器用网线怎么连接两个子网如何连接