一、問題描述:
監控指定程序是否運行,如果程序沒有運行,那麼啓動程序。
二、解決思路:
<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