使用top命令进行内存监测

2026-01-04  本文已影响0人  dhz120
#!/bin/bash
# ========================= 参数配置 =========================
LOG_FILE="/var/log/memory_monitor_top.log"  # 日志文件路径,建议放在 /var/log 或用户目录
INTERVAL=10                                 # 监控间隔时间(秒)
TOP_N=20                                     # 统计占用内存最多的前 N 个进程
# =========================================================

# ========================= 主循环 =========================
while true; do
  # 获取当前时间戳
  current_time=$(date +"%Y-%m-%d %H:%M:%S")

  # 使用 top 命令获取进程信息,按 %MEM 降序排序,取前 TOP_N 条
  # -b: 批处理模式
  # -n 1: 只输出一次
  # -d $INTERVAL: 设置刷新间隔(此处仅作为参数传递,实际间隔由 sleep 控制)
  # -o %MEM: 按内存占用排序
  # -c: 显示完整命令行
  # -w 512: 将列宽扩展到 512,确保长命令不被截断
  # | head -n $TOP_N: 只取前 N 条记录
  process_info=$(top -b -n 1 -d $INTERVAL -o %MEM -c -w 512 | head -n $TOP_N)

  # 将结果写入日志文件
  {
    echo "[$current_time]"
    echo "$process_info"
    echo "----------------------------------------"
  } >> $LOG_FILE

  # 暂停 INTERVAL 秒后继续循环
  sleep $INTERVAL
done


上一篇 下一篇

猜你喜欢

热点阅读