shell腳本監控進程
① shell 腳本檢測服務運行狀態
由於伺服器性能問題,通過shell腳本,定時檢測進程運行狀態。並自動重啟。
check.sh
除此之外,還要設計linux的crontab定時任務
編輯內容:
Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。
cat /etc/crontab
② grep在shell腳本中使用,判斷進程是否存在,進程不存在則重啟
在shell中,判斷一個進程是否存在,是判斷進程數量
沒有運行進程時,如下顯示,只有一條,這條就是這條命令的進程。
如果進程存在就會顯示多條進程信息,其中一條包括命令這條。
所以判斷是否存在,只要判斷數量即可,命令為
進程大於1,則進程存在正常,顯示如下:
以下是最簡單的判斷內容,判斷進程數量小於等於1,則進程不存在,然後重啟即可。
shell判斷相關參數:
需注意的坑:
grep 需要加上參數 -w ,意為精確匹配。如果不加上 -w ,判斷進程數量會不準確。
例:判斷一個名為 info.py 的腳本內容: ps -ef |grep info.py
不加 -w ,會把包括 info.py 都顯示出來,如 info_py , info 之類的。所以顯示數量遠大於實際進程數量。
所以寫腳本時必須加上 -w 參數,顯示只有 info.py 的內容。
grep其他參數參考:
腳本完成後,需添加系統定時任務。
③ 如何用shell腳本監控域名
1)源程序(例如查找用戶為 root,進程名為 CFTestApp 的進程 ID)
1
2
3
PID=`GetPID root CFTestApp`
echo $PID
2)結果輸出
1
2
11426
[dyu@xilinuxbldsrv shell]$
④ 如何使用shell腳本監控是否掛死
本系統中,經常有幾個進程無響應掛死,但是由於不能准確的進行重起,需要做一個腳本來執行這一工作!這幾個進程平時是經常讀寫的!不知道哪位高手可以指教?如何才可以對UN.
⑤ 如何查看shell腳本是否正常運行,跪求liunx大神
因為不知道你的是什麼腳本,不好判斷。
bash -x 檢測整個腳本實際運行過程是否正確
對腳本執行加以監控,你可以通過在腳本中加入一些腳本執行狀態結果的語句比如導出個日誌文件啦,或者對執行結果進行判斷啦,如果腳本是駐留在進程里,判斷進程中是否有腳本啦,然後給你發個執行結果郵件。還是得根據實際情況寫。
⑥ 求:linux 監控shell腳本運行時間
你的意思是某個進程不能不能超過5分鍾,否則觸發某個事件比如發送郵件或簡訊?
如果是這樣,腳本很好控制
直接在運行前記錄一個時間,然後創建一個lock文件
如果腳本完成,刪除pid
再sleep 300秒後判斷lock文件是否存在,如果不存在,退出,如果存在,報警,退出。
⑦ 設計一個shell腳本程序,要求有如下功能: 實現自動備份功能和清理備份等
#!/bin/bash
TIME=`date+%Y%m%d|cut-b3-8`
#question1
tar-zcvf/home/bak/VAR_$TIME_BAK.gzip/var
#question2
ls-l/var>>/home/bak/VAR_$TIME_BAK.log
#question3
find/home/bak-name'*gzip'-mtime+1|xargsrm-rf
腳本名字backup.sh,放到/root下,然後用root創建cronjob
0 12 * * * /root/backup.sh
#question 4 (以redhat為例)
echo " /root/backup.sh " >> /etc/rc.local
#question 5
把下列代碼寫入cronjob中
#!/bin/bash
TIME=`date+%Y"/"%m"/"%d""%H":"%m`
if[-f/home/shell.log]
then
echo"$TIMErunning">/home/tmp.log
cat/home/shell.log>>/home/tmp.log
mv/home/tmp.log/home/shell.log
else
touch/home/shell.log
fi
腳本名字status.sh,放到/root下 (寫的有點小問題,功能執行沒問題)
0 * * * * /root/status.sh
⑧ 在linux下,如何用shell控制一個進程的內存使用上限,以及運行時間上限
需求有點奇怪。
使用多少內存是可執行文件本身決定的,shell腳本只有等程序開始運行了再去檢查進程佔用內存大小,沒有辦法先行控制。
而且任何腳本語言的通病就是,執行效率低(相對於高級語言)。腳本是解釋執行的(如通過命令解釋器bash),本身語句執行就需要時間。1s對腳本來說太短了,無法做到精確控制。
腳本的優點就是:不用編譯;開發效率高(難度低,上手快);但能做的東西有限,很多操作需要調用外部工具來完成。
所以,根據要做的工作選取合適的工具,是很必要的。
⑨ 在安卓shell腳本中如何讓它一直運行判斷一個進程是否存在。 比如QQ進程 存在的話不進行任何操作
如果你是通過一個進程的名字作為關鍵詞來查找進程是否存在的話,可使用
ps -ef | grep "<關鍵詞>" | wc -l
輸出為0表示不存在,輸出大於0,表示存在,且數字就是這個關鍵詞進程的個數;
如果你是通過進程號PID來查找進程是否存在,可以使用
ps --no-heading <PID> | wc -l
同樣,
輸出為0表示不存在,輸出=1,表示存在,因為進程號不可能重復,所以輸出肯定非0即1
⑩ 求Oracle EBS 中,用Linux監控frmweb進程,殺掉CPU佔用超過40%,佔用時間超過30分鍾的進程的shell腳本
psaux|grepfrmweb|awk-va="0:30"'{if($10>a&&$4>40){print$2}}'psaux|awk-va="0:30"'$0~/frmweb/{if($10>a&&$4>40){print$2}}'這個意思?目的是獲取它的PID,如果是這個意思,你再判斷獲取的PID是否為空,再kill就行了
