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