使用指令碼監控指定程式是否執行,如果程式沒有執行,啟動程式。
#!/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='./monitor.log'
pid=`ps -ef | grep "$1"| grep -v grep | grep -v "$0" | grep -v grep |head -n 1| awk ''`
if [ "$" = "" ]; then
echo "$ 首次檢測,未檢測到程式$1程序,等待重啟..." >> "$"
else
echo "$ 首次檢測,$1程式正在執行,pid=$" >> "$"
fi#功能需求: 監控程式是否執行,如果程式沒有執行,那麼啟動程式。
while [ true ]
do time=$(date "+%y-%m-%d %h:%m:%s")
#過濾出目標程序資訊,如果pid為空串說明目標程序未執行,反向過濾掉grep程序和本程序shell資訊, 因為這兩個程序資訊中包含目標程序的名字
pid=`ps -ef | grep "$1"| grep -v grep | grep -v "$0" | grep -v grep |head -n 1| awk ''`
if [ "$" = "" ]
then
echo "$ 未檢測到程式$1程序,重新啟動程式中...." >> "$"
nohup $1 >/dev/null 2>&1 & #重新程式,後台執行,這裡也可以傳參程式指令碼執行
pid1=`ps -ef | grep "$1"| grep -v grep | grep -v "$0" | grep -v grep |head -n 1| awk ''`
if [ "$" = "" ];then
echo "$ 重啟程式$1失敗" >> "$"
else
echo "$ 重啟程式$1成功,pid=$" >> "$"
fielse
echo "$ $1程式正在執行,pid=$" >> "$"
fi sleep 1
done
注意:由於指令碼是迴圈檢測,可後台執行指令碼。
# nohup sh monitor.sh & 或者 sh monitor.sh &
檢視當前後台執行的命令
jobs命令:檢視當前終端後台執行的任務
ps命令:檢視當前的所有程序
shell監控指令碼 監控CDN 首頁
注意 請先參考 shell監控指令碼 準備工作,監控指令碼在 rhel5 下測試正常,其它版本的linux 系統請自行測試 監控cdn 首頁 cat chk cdn.sh bin bash script name chk cdn.sh check cdn index.html domain name...
shell指令碼 開發系統監控指令碼
某公司隨著業務的不斷發展,所使用的linux伺服器也越來越多。管理員希望編寫乙個簡單的效能監控指令碼,放到各伺服器中,當監控指標出現異常時傳送告警郵件。編寫名為sysmon.sh的shell監控指令碼 監控內容包括cpu使用率,記憶體使用率,根分割槽的磁碟占有率,百分比只需精確到個位 出現磁碟占有率...
用shell指令碼實現監控程式自動重啟
很少用shell指令碼,最近在寫乙個shell指令碼,遇到一些問題,竟然被折騰了半天。這些錯誤太低階了,不應該.趁現在有時間,將執行該shell的指令碼的整個過程記錄下來,方便以後作為參考。一 我們先看看編寫的shell指令碼的內容,該shell的作用主要是實現監控某個程式崩潰之後就自動重啟該程序。...