1,描述
我們需要寫一個進程監控的指令碼,目的是檢測tomcat進程是否停掉,如果掛了,自動拉起,所以我們寫了如下的指令碼,參考了一些資料,希望對有需要的人有所協助。
#!/bin/bashecho "Start"URL="http://127.0.0.1/###/"curlit(){ #echo "??"curl --connect-timeout 15 --max-time 20 --head --silent "$URL" | grep '200'# 上面的15是連線逾時時間,若訪問localhost的HTTP服務超過15s仍然沒有正確響應200頭代碼,則判斷為無法訪問。}doit(){ if ! curlit; then# 如果localhost的apache服務沒有正常返回200頭,即出現異常。執行下述命令: # echo "TD"sleep 20 #top -n 1 -b >> /var/log/log.logkill `ps -ef|grep java|grep -v grep |awk '{print $2}'` > /dev/null 2>&1# 這條語句中ps -ef|grep java|grep -v grep為查詢進程中java進程同時排除本身語句,用awk找到第二列資訊,返回狀態扔到黑洞中。sleep 2cd /tomcat-6.0.29/bin//bin/sh startup.sh #echo "EN"echo $(date) “Tomcat Restart” >> /var/log/log.log# 寫入日誌sleep 60# 重啟完成後等待,然後再次嘗試一次if ! curlit; then# 如果仍然無法訪問,則:echo "@"echo $(date) “Failed!” >> /var/log/log.log# 寫入apache依然重啟失效的日誌fisleep 180fi}sleep 3# 運行指令碼後才開始正式工作(防止重啟伺服器後由於tomcat還沒開始啟動造成誤判)# 主迴圈體doit