用shell指令碼實現監控程式自動重啟

2021-08-14 19:18:16 字數 1123 閱讀 8475

很少用shell指令碼,最近在寫乙個shell指令碼,遇到一些問題,竟然被折騰了半天。這些錯誤太低階了,不應該.趁現在有時間,將執行該shell的指令碼的整個過程記錄下來,方便以後作為參考。

一、我們先看看編寫的shell指令碼的內容,該shell的作用主要是實現監控某個程式崩潰之後就自動重啟該程序。

[html]view plain

copy

#!/bin/bash  

while true  

do   

procnum

=` ps -ef|grep "test"|grep -v grep|wc -l`  

if [ $procnum -eq 0 ]; then  

/home/test&  

fi  

sleep 30  

done  

-eq意思是等於0,用於判斷該test是否還在執行狀態。監控/home/test這個程式是否執行。

二、由於該程式是window上的編寫的,我們將它(名字用run._start.sh)拷貝到linux下之後需要對它賦予操作的許可權

chmod 777 run_start.sh

三、我們將啟動一下該程式

./run_start.sh &

記得加上&,要不然得視窗退了,該指令碼也退出了。

三、發現執行的時候有錯誤「-bash: ./run_start.sh: /bin/bash^m: bad interpreter: 沒有那個檔案或目錄」 ,根據提示,我以為沒有這個shell沒有安裝,所以找不到「/bin/bash」,其實理解錯誤了,是linux上無法識別window的doc格式。以後記住了,如果遇到這bad interpreter的錯誤,一定要將字元做一下轉換,方法如下:

1)編輯出錯檔案

vi run_start.sh

2)檢視該格式(報錯檔案格式是dos)

:set ff

3)修改格式

:set ff=unix

4)儲存退出

:wq!

四、再重新執行指令碼,可以看到正常了

五、設定開機自動啟動指令碼

使用命令 vi  /etc/rc.local 在檔案末尾新增這一行        /home/test.sh&

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...

shell指令碼檢測監控程式

使用指令碼監控指定程式是否執行,如果程式沒有執行,啟動程式。bin bash 判斷是否指令碼傳參 if n 1 then echo e 033 31m 指令碼傳參為空,請檢查.033 0m exit 1 fi 時間格式 ltime date y m d h m s log日誌檔案 logfile m...