Shell腳本實例(一) 監控一個程序的運行情況

一、問題描述:

        監控指定程序是否運行,如果程序沒有運行,那麼啓動程序。


二、解決思路:

        <1>、我們判斷一個程序是否運行,可以通過查看該程序的進程信息來判斷。

                  例: 判斷程序 01FirstScript.sh 是否在運行

                  命令:ps -ef  |  grep  01FirstScript.sh | grep  -v  grep

                  結果分析: 如果命令執行之後有輸出,即輸出進程信息。則說明程序正在運行

                                     如果執行之後沒有輸出,則說明程序沒有運行

        <2>、如何監控指定的程序?

                  我們可以將指定程序的名字作爲監控程序的參數傳遞進去,在內部實現時,通過死循環來不斷監控

        <3>、如果程序未運行,如何啓動程序?

                  在判斷程序爲運行時,如果指定程序名是監控程序的第一個參數。可以通過下面命令啓動指定程序

                  sh  $1


三、腳本代碼實現:


#!/bin/bash

#進程監控腳本
#功能需求: 監控程序是否運行,如果程序沒有運行,那麼啓動程序。


while [ true ]
do

	pro=$(ps -ef | grep "$1" | grep -v grep | grep -v "$0")
	#過濾出目標進程信息,如果pro爲空串說明目標進程未運行
        #反向過濾掉grep進程 和 本進程信息, 因爲這兩個進程信息中包含目標進程的名字

	if [ -z "$pro" ]
	then 
   		  echo "程序未啓動,重新啓動程序"
	          sh $1    #重新啓動指定程序
	else
   		  echo "程序正在運行..."
	fi
	
	sleep 0.5

done


四、運行結果截圖:
六、程序運行過程說明:

     <1>、一開始指定程序並未運行
     <2>、然後監控進程檢測指定程序未運行,隨即啓動指定程序
     <3>、指定程序開始運行
     <4>、在中途使用kill命令終止指定程序進程
     <5>、監控進程再次檢測到指定程序未運行,隨即啓動指定程序
     <6>、指定程序開始運行





發佈了51 篇原創文章 · 獲贊 55 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章