1#!/bin/bash
2# system_monitor.sh
3
4LOGFILE="/var/log/system_monitor.log"
5THRESHOLD_CPU=80
6THRESHOLD_MEM=90
7
8while true; do
9 # 获取CPU使用率最高的进程
10 CPU_TOP=$(top -b -n 1 | awk 'NR>7 {print $9,$12}' | sort -nr | head -1)
11 CPU_USAGE=$(echo $CPU_TOP | awk '{print $1}')
12 CPU_PROCESS=$(echo $CPU_TOP | awk '{print $2}')
13
14 # 获取内存使用率最高的进程
15 MEM_TOP=$(top -b -n 1 | awk 'NR>7 {print $10,$12}' | sort -nr | head -1)
16 MEM_USAGE=$(echo $MEM_TOP | awk '{print $1}')
17 MEM_PROCESS=$(echo $MEM_TOP | awk '{print $2}')
18
19 # 记录日志
20 echo "[$(date)] CPU: ${CPU_USAGE}% (${CPU_PROCESS}), MEM: ${MEM_USAGE}% (${MEM_PROCESS})" >> $LOGFILE
21
22 # 检查阈值
23 if (( $(echo "$CPU_USAGE > $THRESHOLD_CPU" | bc -l) )); then
24 echo "WARNING: High CPU usage: ${CPU_USAGE}% by ${CPU_PROCESS}" >> $LOGFILE
25 fi
26
27 if (( $(echo "$MEM_USAGE > $THRESHOLD_MEM" | bc -l) )); then
28 echo "WARNING: High memory usage: ${MEM_USAGE}% by ${MEM_PROCESS}" >> $LOGFILE
29 fi
30
31 sleep 60
32done