腳本功能
-
每隔一定時間(例如每分鐘)檢查系統中CPU占用率最高的進程。
-
將進程的PID、名稱和CPU占用率記錄到日志文件中。
-
可以設置一個閾值,當某個進程的CPU占用率超過該閾值時,發送警告信息(可選)。
腳本代碼
#!/bin/bash
# 配置參數
LOG_FILE="/var/log/cpu_usage.log" # 日志文件路徑
INTERVAL=60 # 檢查間隔時間(秒)
THRESHOLD=80 # CPU占用率閾值(百分比)
# 檢查并創建日志文件
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
fi
# 檢查CPU占用率并記錄
while true; do
# 獲取CPU占用率最高的進程信息
CPU_USAGE=$(ps -eo pid,comm,%cpu --sort=-%cpu | head -n 2 | tail -n 1)
PID=$(echo "$CPU_USAGE" | awk '{print $1}')
NAME=$(echo "$CPU_USAGE" | awk '{print $2}')
USAGE=$(echo "$CPU_USAGE" | awk '{print $3}')
# 記錄到日志文件
echo "$(date +"%Y-%m-%d %H:%M:%S") - PID: $PID, Name: $NAME, CPU Usage: $USAGE%" >> "$LOG_FILE"
# 檢查是否超過閾值
if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then
echo "Warning: Process $NAME (PID: $PID) is using $USAGE% CPU, which exceeds the threshold of $THRESHOLD%." | tee -a "$LOG_FILE"
# 可選:發送警告郵件或通知
# mail -s "CPU Usage Alert" your_email@example.com <<< "Process $NAME (PID: $PID) is using $USAGE% CPU, which exceeds the threshold of $THRESHOLD%."
fi
# 等待指定時間
sleep "$INTERVAL"
done
腳本說明
-
日志文件:腳本將監控結果記錄到指定的日志文件中。你可以通過查看日志文件來了解系統的CPU使用情況。
-
檢查間隔:
INTERVAL變量控制腳本檢查CPU使用情況的時間間隔。默認設置為60秒。 -
閾值:
THRESHOLD變量設置了一個CPU占用率的閾值。當某個進程的CPU占用率超過該閾值時,腳本會記錄警告信息。你可以根據需要調整這個閾值。 -
警告通知:當CPU占用率超過閾值時,腳本會記錄警告信息到日志文件中。你可以選擇通過郵件或其他方式發送通知。