shell腳本監控nginx 進程是否運轉


通常看進程是否運行可以通過輸入指令 ps -ef|grep nginx 來查看

 

 

但是要通過腳本來查看改如何實現呢, 其實這類的實現方法並不單一,有很多方法,今天我們就來例舉2個;

1.第一個通過ps -ef|grep xxx  在grep 指令里面有一個 grep -vc grep 會返回運行線程的數量,

#!/bin/bash
name=nginx
num=$(ps -ef|grep $name |grep -vc grep)
if [$num ge 1 ]; then
    echo "$name is running!"
else
    echo "$name is not running!"
fi

 

2.通過curl 指令,也比較推薦這個方法,因為curl不但可以驗證進程是否正常,可以完全驗證服務是否可以正常訪問,

#!/bin/bash
Resettem=$(tput sgr0)
ServerAddr='http://111.222.333.444:8080/';
arr_server=('index.html' 'AAAA' 'BBBB');

Check_Server_Status()
{
	
	for((i=0;i<${#arr_server[@]};i++)){
	
		ServerUrl=$ServerAddr${arr_server[i]}
		Status_code=$(curl -m 10 -s -w %{http_code} ${ServerUrl} -o /dev/null) #-m/--max-time <seconds> 指定處理的最大時長; -w/--write-out <format> 在數據傳輸完成后,輸出和本次傳輸相關的參數信息,比如 hea
der 的大小、下載速度等
		echo "requestUrl" $ServerUrl;
		if [ $Status_code -eq 000 -o $Status_code -ge 400 ];then #000是請求服務無響應的一個狀態碼
			echo -e '\E[32m' "check http error!Response status code is"  $Resettem $ServerUrl $Status_code
		
			echo "check server ${ServerUrl} ${Status_code} error at $(date +%Y-%m-%d) $(date +%H:%M:%S), pls have a check right now!" | mail -s "${ServerUrl}${Status_code}"  1234567890@qq.com #這部分是對請求不成功,
  #發郵件通知用戶,echo 的內容是郵件正文,-s 是郵件的主題 else Http_content=$(curl -s ${ServerUrl}) echo -e '\E[32m' "check http server ok! \n" $Resettem $Http_content fi } }

 

對於結果,如果訪問不通過可以,觸發郵件通知用戶。

對於發郵件,

1.需要安裝sedmail 模塊

2.下面是收到的郵件,比較簡潔,如果需要更詳細,可以自定百度查看發郵件的詳細配置

 

  

然后通過crontab -e 把腳本加入到定時任務里面,可以只是每5分鍾運行一次檢查nginx 服務器是否在運行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM