今天公司LD讓寫個小腳本,監控一個進程是否存在,存在怎退出腳本,若是不存在就發一封郵件給指定郵箱,我是經過守護進程的運行狀態來判斷該服務的鏈接狀況,並將測試結果顯示到標準輸出上。
shell
爲了方便監控,使用crontab使其每兩小時執行一次。bash
代碼:
ide
#!/bin/bash # #提示用戶輸入一個指定守護進程名稱,並將其賦予變量n_proc #echo "Please input a name of process #read n_proc # #搜索變量n_proc中指定的守護進程的進程號,並賦值給變量pidnu pidnu=$( ps ax |grep -v "ps ax"|grep -v grep |grep $n_proc|awk '{print $1}') # echo "checking for \"$n_proc\",please wait..." # #判斷變量pidnu是否爲空,空則證實此進程不存在。 if [ -z "$pidnu" ] then echo "The status be stopped..." mail -s "title" *********@163.com < /root/shell/mail.txt exit else echo "The status be running..." fi
設置定時任務測試
[root@localhost ~]# crontab -e 2 * * * * sh ~/shell/status.sh (若是使用定時任務的話,就應該把上面的$n_proc換成指定的某個進程)
郵件已成功發送3d