shell指令碼檢測監控程式

2021-10-24 04:16:57 字數 1454 閱讀 1744

使用指令碼監控指定程式是否執行,如果程式沒有執行,啟動程式。

#!/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的作用主要是實現監控某個程式崩潰之後就自動重啟該程序。...