使用shell指令碼實現對confluence服務健康狀況的監控,並在服務掛掉時,及時重新啟動服務
#!/bin/bash
#create by kjl
#2019-11-22
#引數ip=172.20.**.**
port=9090
logfile=/home/work/confluence/data/wiki_check.log
confluence_log=/home/work/confluence/atlassian-confluence-5.6.5/logs
sleep_time=60
#釘釘phone=138*********
url=
message()
#返回狀態碼檢查
returnnode_check() $ip:$port` -lt 400 ]];then
#如果切換到work使用者執行,服務內部有錯,拿到的狀態嗎是500000
let right_times++
fisleep $per_time
done
}#程序埠檢查,heal_num為1表示程序或埠出問題,為0表示均正常
pp_check()
#死迴圈
while [[ true ]];do
sleep $sleep_time
now_date=$(date "+%y-%m-%d")
now_time=$(date "+%y-%m-%d %h:%m:%s")
#首次檢查
returnnode_check
pp_check
if [[ $right_times -lt 3 || $heal_num -eq 1 ]];then
#觸發重啟
#釘釘通知服務異常
#message "ding~服務異常,正在嘗試重啟..."
echo $now_time"**********服務異常,嘗試重啟...*************" >>$logfile
pid=`ps aux |grep 'confluence' |grep -v grep |grep -v 'wiki_check' | awk ''`
if [[ -n $ ]]; then
kill -9 $
ficp -a $confluence_log/catalina.out $confluence_log/catalina.$now_date.log && echo '' > $confluence_log/catalina.out
/home/work/confluence/atlassian-confluence-5.6.5/bin/start-confluence.sh"
#日誌中可以捕捉到「info: server startup in」資訊,但是狀態嗎不對
else
echo $now_time"**********服務健康狀況正常*************">>$logfile
continue
fi
i=0while [[ $i -lt 60 ]]; do
grep 'info: server startup in' $confluence_log/catalina.out
if [[ $? -eq 0 ]];then
break
filet i++
sleep 10
done
#再次複核
returnnode_check
pp_check
if [[ $right_times -lt 3 || $heal_num -eq 1 ]];then
#重啟後服務仍未恢復
#釘釘通知人工處理
message "ding~wiki服務重啟失敗,請盡快排查問題"
echo $now_time"**********服務重啟失敗*************">>$logfile
else
echo $now_time"**********服務重啟成功*************">>$logfile
fidone
linux利用shell實現守護程序的指令碼
在遊戲開發領域,伺服器宕機那是家常便飯。本文簡單介紹如何利用linux的shell指令碼實現簡單的守護程序。bin sh 新增本地執行路徑 export ld library path while true do 啟動乙個迴圈,定時檢查程序是否存在 server ps aux grep center...
linux利用shell實現守護程序的指令碼
原 2016年07月26日 15 13 03 簾捲西風 閱讀數 12466 標籤 shell 伺服器 遊戲開發 linux 守護程序 更多 個人分類 遊戲開發 系統運維 所屬專欄 遊戲伺服器開發專欄 在遊戲開發領域,伺服器宕機那是家常便飯。本文簡單介紹如何利用linux的shell指令碼實現簡單的守...
Linux Nginx服務守護監控
由於nginx的出色表現,越來越多的web伺服器採用nginx。雖然nginx很棒,但萬一掛了呢?我們最好寫個小腳本來監控。如果nginx掛了,系統自動重啟。當然,在給出指令碼之前,先做幾個假設,nginx的目錄是 usr local nginx 其pid conf 分別為在相應預設目錄之下。例項指...