首页/系统/Linux 运维命令速查/top 批处理采样模式
进程与作业69 条

top 批处理采样模式

top -b 非交互输出:-n 次数、-d 间隔、-b 可直接进日志/管道,做定期快照与事后分析。

Linux 运维命令速查系统更新于 2026-10-13

top 批处理模式是什么

top 加 -b 进入批处理模式:不占用终端、不做交互刷新,把每次采样的完整快照按顺序打印到标准输出。这一下就把 top 从「盯着看的工具」变成「能进脚本和日志的采样器」——定时采一份系统快照留档、从输出里抓负载与热点进程、观察某个进程十分钟内的资源变化,都靠这个模式实现。与之配套的是采样次数与间隔两个参数。

基本信息

适用平台GNU/Linux 的 procps-ng 版 top(macOS 的 top 参数不同)
语法top -b -n 采样次数 -d 间隔秒数
常用选项-b 批处理 -n 次数 -d 间隔 -o 排序字段 -p 指定进程 -u 指定用户
默认排序按 CPU 占用降序
输出结构开头若干行系统概况,之后是进程表
权限普通用户可看全局概况,进程详情受权限限制

典型使用场景

  • 定时采集系统快照落盘,事后分析故障时段的资源使用。
  • 在报警脚本里取负载与热点进程,替代解析交互式界面的输出。
  • 长时间观察某个进程的内存或 CPU 变化趋势。
  • 对比调优前后同一时段的采样结果。
  • 记录故障现场,作为工单附件或复盘材料。

常用写法

常用写法
top -b -n1 | head -20                      # 单次快照,取头部系统概况
top -b -d 1 -n 5 > /tmp/top.log            # 每秒一次共 5 次,落盘留档
top -b -n1 -o %MEM | head -15              # 按内存排序看排行
top -b -n1 -p 1234                         # 只盯指定进程
top -b -n1 -u deploy | head -20            # 只看某个用户的进程
top -b -n1 -o %CPU | awk 'NR<=7 || $9>50'  # 筛出 CPU 占用高的行
top -b -n 3 -d 2 -p 1234 | grep 1234       # 观察目标进程多次采样变化
top -b -n1 -o %MEM | awk 'NR<=7 || $10>20' # 筛出内存占用高的行

参数与输出读法

参数或字段作用使用要点
-b批处理模式无交互键,输出适合管道与重定向
-n 次数采样次数次数太少只有单点数据,看趋势至少 3 次
-d 间隔采样间隔秒数批处理下常用 1 到 5 秒
-o 字段排序字段如 CPU 与内存占用,字段名含百分号
-p PID只看指定进程排查单进程问题最常用
-u 用户只看指定用户多用户机器上区分业务归属
单次快照里进程的 CPU 百分比是自进程启动以来的平均值口径,不是瞬时值。要看瞬时趋势就用 -d 1 -n 3 并重点观察后两次采样,单点数据容易漏掉尖峰。
字段名含百分号,在 awk 里直接匹配字符容易踩转义问题,用位置列(CPU 通常是第 9 列、内存第 10 列)更稳;不同版本的列顺序可能微调,解析前先看一遍本机输出。
批处理模式下系统概况的行数与字段随版本变化,脚本硬编码截取行号前应先打印一份完整输出核对,避免升级后被静默改动的格式带偏。

易错点

  • 用单次快照的结果判断当前 CPU 高不高,看到的是开机以来的均值口径,瞬时尖峰会完全漏掉;看趋势必须多采几次。
  • 报警脚本直接解析交互式界面的输出,遇到控制字符与刷新内容导致解析失败;脚本必须使用批处理模式。
  • 采样间隔设得太短(如十分之一秒)会额外增加系统开销,采样本身成为负载来源;常规留档 1 到 5 秒足够。
  • 不同发行版版本差异导致字段位置变化,硬编码列号的脚本在升级后静默取错字段;解析前先校验表头。

数据来源与参考

  • man 1 top(procps-ng 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌