首页/系统/Linux 运维命令速查/top 实时进程与资源总览
性能与监控48 条

top 实时进程与资源总览

top 是随叫随到的性能常用入口:默认按 CPU 排序,1 展开多核、M 按内存、P 按 CPU、k 杀进程、Shift+W 保存配置。

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

从性能视角读 top

top 分上下两部分:上面的系统摘要行才是判断系统整体状态的主依据,下面的进程列表用于定位具体消耗者。顺序应该反过来看——先在摘要里确认瓶颈类型(CPU 算力、IO 等待、内存压力、虚拟化抢占),再去进程列表找对应的进程。这个顺序能避免「盯着 CPU 排序却查不出问题」的常见困境。

基本信息

适用平台Linux(procps-ng 的 top);精简容器里的 BusyBox top 字段不完整
命令语法top [选项]
采集相关选项-b 批模式(适合重定向)、-n 刷新次数、-d 间隔秒数、-1 单核视图、-o 排序字段、-H 线程模式、-c 完整命令、-p 指定 PID、-u 指定用户
交互键1 展开每核、M 内存排序、P CPU 排序、T 按运行时间排序、c 完整命令、k 发信号、r 调优先级、z 彩色、W 保存配置
数据来源采样 /proc/stat、/proc/meminfo 与 /proc/[pid] 的两次差值,因此显示的是区间增量

典型使用场景

  • 确认瓶颈类型:先看 wa、st 与 us 的组合,判断是算力、IO 还是虚拟化抢占
  • 查看内存与交换:核对 available 与 swap 使用,判断是否出现内存压力
  • 批量留档:top -b -d 1 -n 5 输出到文件,作为告警期间的现场证据
  • 单核热点定位:按 1 展开每核,确认是单线程瓶颈还是整体负载
  • 线程级排查:按 H 观察多线程应用的线程分布
  • 定期体检:登录机器后先跑一次,与历史基线对比

常用示例

常用示例
top -b -d 1 -n 5 > /tmp/top-$(date +%s).log   # 采样五分钟留档
top -o %CPU -b -n 1 | head -n 15               # 单次按 CPU 排序
top -H -b -n 1 -p 1234                         # 查看某进程的线程
TERM=xterm top -d 2                            # 交互模式,2 秒刷新
# 交互界面里:
#   1 展开每核  M 内存排序  P CPU 排序  c 完整命令  W 保存配置
vmstat 1 5        # top 看全局,vmstat 看趋势
iostat -xz 1 3    # wa 高时转去看磁盘

摘要行逐项读法

字段含义判读
load average1、5、15 分钟平均负载与逻辑核数对比,别只看绝对值
Tasks进程总数与运行、睡眠、停止、僵尸的数量僵尸数持续不为 0 要处理父进程
%Cpu us / sy用户态与内核态占比us 高看应用,sy 高看系统调用与网络
%Cpu wa等待 IO 的比例,此时 CPU 空闲持续偏高说明存储是瓶颈
%Cpu st被虚拟化宿主抢占的比例云主机上偏高属于资源竞争
MiB Memtotal、free、used、buff-cache与 free 命令口径对应,used 含缓存差异要留意
MiB Swap交换空间总量与已用结合 vmstat 的 si/so 判断是否在换页
top 与 vmstat、iostat 的分工:top 给出「现在谁在消耗什么」的快照,适合定位进程;vmstat 适合看趋势与等待类型(r、b、si、so、cs);iostat 负责存储侧细节(await、util、队列深度)。三者配合使用,比在 top 里反复刷新有效得多。
按 W 可以把当前的排序字段、显示列与刷新间隔保存到 ~/.toprc,下次启动直接沿用。批模式的输出是固定宽度纯文本,适合落盘归档与简单解析,但不适合当作长期监控数据源——历史曲线与趋势对比应交给导出到监控平台的指标,top 只负责现场判断。
在容器里运行 top,摘要行的 CPU 与内存数字来自宿主机的 /proc,除非宿主做了 lxcfs 之类的伪装。容器自身的资源压力要看 cgroup 指标(cpu.stat 的 nr_throttled、memory.current 与 memory.max),否则容易把宿主整体负载误判为容器问题。

交互与采样要点

操作作用场景
切换排序字段按 CPU 或内存重排先找热点再深挖
显示完整命令行避免只看进程名确认是哪个实例
展开线程视图看到内部热点线程定位多线程争用
批模式采样固定次数后输出留证据与横向对比
调整刷新间隔改变采样节奏抓瞬时抖动
判断趋势不要靠单次快照:用固定间隔的批模式连续采样一段窗口,再结合系统级统计工具交叉验证,才能区分偶发尖峰与持续压力。容器场景里要意识到摘要行反映的是宿主机整体指标,容器自身压力应看用量与限制数据,两者混用会得出相反结论。

易错点

  • 只在进程列表里按 CPU 排序,忽略摘要行提示的 wa 与 st,导致在错误方向排查
  • 把 top 的瞬时数字当结论:它是两次采样之间的增量,突发与短命进程容易漏掉或多算,判断趋势要用批模式或 vmstat
  • 在 top 交互界面按 k 直接发信号给进程,选错行会误杀服务;先按 c 确认完整命令行
  • 容器内的摘要行反映宿主机资源,用它判断容器压力会得出错误结论,应改看 cgroup 指标
  • 内存行里的 used 与 free 命令口径不完全一致(缓存归属不同),跨工具比较前先确认统计方式
  • 只看进程列表不看摘要行:等待占比与占用时间这类摘要信息直接指向瓶颈方向,忽略它们往往会在错误的方向优化很久

数据来源与参考

  • man 1 top(procps-ng)
  • top 内置帮助(h)

相关工具

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