top -b 启用批处理模式输出纯文本,需配合 -n(次数)和 -d(间隔)使用,支持重定向、过滤、排序及结合 shell 工具分析,但不支持交互操作且需注意权限与性能。

直接用 top -b 就能开启批处理模式,它不进交互界面,只输出纯文本结果,适合记录日志或交给脚本处理。
基础批处理命令写法
批处理模式必须配合 -n(次数)和可选的 -d(间隔秒数),否则会无限运行。最简常用组合是:
-
top -b -n 1 > top_once.log:抓取一次快照,保存到文件 -
top -b -n 5 -d 3 > top_5x3s.log:每3秒采样一次,共5次,总耗时约12秒 -
top -b -n 10 -d 1 | grep 'nginx\|mysql' > webdb.log:实时过滤关注进程,只保留含关键词的行及后续10行(可用-A10)
让日志更实用的小技巧
默认输出只显示前几列,关键信息可能被截断。加几个参数能让日志更完整:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
-c:显示完整命令行(含路径和参数),方便定位具体服务实例 -
-w 200:设宽屏(200列),避免长命令被换行切碎 -
-o %CPU或-o %MEM:按CPU或内存使用率排序,高负载进程一眼可见 - 组合示例:
top -b -n 1 -c -w 200 -o %CPU > top_cpu_sorted.log
结合其他命令做轻量分析
批处理输出是纯文本,可直接用 shell 工具加工:
- 查某个进程的CPU峰值:
top -b -n 20 -d 2 | grep 'redis-server' | awk '{print $9}' | sort -nr | head -1 - 提取内存占用前5的进程:
top -b -n 1 | sed -n '8,/^$/p' | sort -k10 -nr | head -5(第8行起是进程列表,%MEM在第10列) - 持续写入带时间戳:
while true; do echo "=== $(date) ==="; top -b -n 1 | head -5; sleep 10; done > monitor.log
注意事项和常见问题
批处理模式下部分交互功能不可用,也要注意权限和资源消耗:
- 不能用
k杀进程、r改优先级——这些只在交互模式生效 - 如果用普通用户执行,看不到其他用户的进程;需
sudo top -b …获取完整视图 - 频繁采集(如
-d 0.5)会增加系统开销,生产环境建议间隔 ≥2 秒 - 输出单位默认是 KiB,想看 MiB 可加
-E(大写E)参数,但批处理模式下该参数无效,只能靠后续用 awk/gawk 转换单位


















