很少用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...