使用top命令进行内存监测

#!/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


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容