脚本功能
-
每隔一定时间(例如每分钟)检查系统中CPU占用率最高的前10个进程。
-
将进程的PID、名称和CPU占用率记录到日志文件中。
-
可以设置一个阈值,当某个进程的CPU占用率超过该阈值时,发送警告信息(可选)。
脚本代码
#!/bin/bash
# 配置参数
LOG_FILE="/var/log/top_cpu_usage.log" # 日志文件路径
INTERVAL=60 # 检查间隔时间(秒)
THRESHOLD=80 # CPU占用率阈值(百分比)
# 检查并创建日志文件
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
fi
# 定义记录日志的函数
log() {
echo "$(date +"%Y-%m-%d %H:%M:%S") - $1" >> "$LOG_FILE"
}
# 检查CPU占用率并记录
while true; do
# 获取CPU占用率最高的前10个进程信息
CPU_USAGE=$(ps -eo pid,comm,%cpu --sort=-%cpu | head -n 11 | tail -n 10)
# 记录到日志文件
log "Top 10 CPU-consuming processes:"
echo "$CPU_USAGE" >> "$LOG_FILE"
# 检查是否超过阈值
while IFS= read -r line; do
PID=$(echo "$line" | awk '{print $1}')
NAME=$(echo "$line" | awk '{print $2}')
USAGE=$(echo "$line" | awk '{print $3}')
if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then
log "Warning: Process $NAME (PID: $PID) is using $USAGE% CPU, which exceeds the threshold of $THRESHOLD%."
# 可选:发送警告邮件或通知
# mail -s "CPU Usage Alert" your_email@example.com <<< "Process $NAME (PID: $PID) is using $USAGE% CPU, which exceeds the threshold of $THRESHOLD%."
fi
done <<< "$CPU_USAGE"
# 等待指定时间
sleep "$INTERVAL"
done
脚本说明
-
日志文件:脚本将监控结果记录到指定的日志文件中。你可以通过查看日志文件来了解系统的CPU使用情况。
-
检查间隔:
INTERVAL
变量控制脚本检查CPU使用情况的时间间隔。默认设置为60秒。 -
阈值:
THRESHOLD
变量设置了一个CPU占用率的阈值。当某个进程的CPU占用率超过该阈值时,脚本会记录警告信息。你可以根据需要调整这个阈值。 -
警告通知:当CPU占用率超过阈值时,脚本会记录警告信息到日志文件中。你可以选择通过邮件或其他方式发送通知。