nohup 命令主要用于在后臺運行程序,使其不受掛起(SIGHUP)信號的影響。要實現進程監控與報警,可以結合其他工具和腳本來完成。以下是一個簡單的示例:
monitor.sh 的腳本文件,內容如下:#!/bin/bash
# 要監控的命令或程序
cmd="your_command_here"
# 進程名,用于檢查進程是否在運行
process_name="your_process_name"
# 檢查進程是否在運行的函數
check_process() {
if pgrep -x "$process_name" > /dev/null
then
echo "$process_name is running."
else
echo "$process_name is not running. Attempting to restart..."
$cmd &
fi
}
# 主循環,每隔一段時間檢查一次進程狀態
while true; do
check_process
sleep 60 # 每隔60秒檢查一次
done
修改 your_command_here 為你需要運行的命令,將 your_process_name 替換為進程名。
為腳本添加可執行權限:
chmod +x monitor.sh
nohup 命令運行腳本,并將輸出重定向到日志文件:nohup ./monitor.sh > monitor.log 2>&1 &
現在,monitor.sh 腳本將在后臺運行,每隔60秒檢查一次指定進程是否在運行。如果進程未運行,腳本將嘗試重新啟動它。同時,腳本的輸出將被記錄到 monitor.log 文件中。
你可以根據需要調整檢查間隔、報警方式等。例如,你可以在 check_process 函數中添加郵件通知功能,以便在進程未運行時發送報警郵件。