2021-08-25
1. 需求
在服務掛掉之后我們要怎么做才能保證服務在短時間內開啟?可以編寫腳本監控服務的狀態,在服務掛掉后及時將其開啟,並定時執行該腳本。
2. 腳本編寫
思路:平常我們可以通過 ps ,netstat 命令查看服務是否已經開啟,所以可以通過這兩個命令去監控服務的狀態。每個服務的端口號是一一對應的,故我們選擇監控端口號來判斷服務的狀態。具體腳本如下:
# 編寫腳本 vi tomcat_monitor_port.sh
# init,因為 crontab 用的系統變量 source ~/.bash_profile # grep 服務的端口號,grep LISTEN 表示服務正在正常運行 server=`netstat -nat | grep 8090 | grep LISTEN` # 如果服務沒有開啟,sever 會是空的 # 如果服務沒有開啟,開啟;若服務已經開啟,輸出提示 if [ ! "$server" ]; then cd /home/server/app/tomcat-7.0.109-1/bin ./startup.sh else echo " tomcat is running!! " fi
# 先執行一下,確保腳本可以正常運行 sh tomcat_monitor_port.sh
如果執行腳本發現錯誤,可以使用 sh -x tomcat_monitor_port.sh 進行錯誤排查
3. 設置定時任務
# 添加定時任務 crontab -e
# 每分鍾檢查一次 tomcat 進程是否運行,若沒運行啟動它 * * * * * sh /home/server/scripts/tomcat_monitor_port.sh
4. 測試
先關掉 tomcat 服務 ./shutdown.sh
查看端口 netstat -nat | grep 8090 ,服務正在關閉,現在的狀態是 TIME_WAIT
等一分鍾后再看,服務開啟,現在端口狀態變成 LISTEN
查看定時任務執行日志 cat /var/spool/mail/server
OK,到這里,一個簡單的定時執行的服務監控腳本就完成啦