top/htop 命令速查表 - Linux 系统监控常用命令大全

机器一慢,多数人先敲 top,但屏幕上的 Load Average 只是起点:它统计的是可运行态和不可中断睡眠态的任务,进程卡在磁盘 IO 上的 D 状态同样会把它顶高,而真正的 CPU 瓶颈要看 %us 与 %sy 加上按 CPU 排序的进程列。所以正确读法是先用交互排序(按 P、M、%CPU、%MEM 依次切换)锁定元凶进程,再回头看 si/hi 是否异常、wa 是否说明 IO 打满,最后用内存与 swap 三行区分是泄漏还是单纯不够用;瞬时的尖峰要结合采样间隔看。表里同时收录 top 的一次性批处理导出(-b -n1 单次采样、top -H 展开线程),可把多次采样存成文件做差分对比;htop 部分则补上它比 top 多出的树形视图、搜索过滤与快捷键切换。想要长时趋势,别反复手动刷新,用 vmstat 或 pidstat 交叉验证更可靠。

系统与运维·共 52 条命令·最后更新 2026-07-21
tophtop监控linux

典型使用场景

面向需要快速判断「机器卡在哪」的运维与开发人员。top 的难点在于负载均值会骗人:load 高但 CPU idle 也高,通常是磁盘或网络 IO 在阻塞而不是 CPU 不够;而 D 状态(不可中断睡眠)进程堆积意味着底层存储已经超载,这类进程连 kill -9 都要等 IO 返回。本表把交互排序键、批处理参数与关键指标判断标准放在一起,适合配合脚本做自动化巡检。

top 基础命令 6

top
启动 top 监控
top -d 5
设置刷新间隔为 5 秒
top -p 1234
只监控指定 PID
top -u username
只监控指定用户的进程
top -n 10
刷新 10 次后退出
top -b -n 1 > top.log
批处理模式输出到文件

top 交互命令 8

h / ?
显示帮助
q
退出
Space
立即刷新
k
杀进程(输入 PID)
r
修改进程优先级(输入 PID)
n
设置刷新次数
s
设置刷新间隔
W
保存配置到 ~/.toprc

top 排序与显示 10

M
按内存排序
P
按 CPU 排序
T
按时间排序
N
按 PID 排序
c
切换显示完整命令路径
H
切换显示线程
i
切换显示空闲进程
1
显示每个 CPU 核心的使用率
f
选择显示字段
o
排序字段

htop 基础命令 5

htop
启动 htop 监控(需安装)
htop -d 5
设置刷新间隔为 5 秒
htop -u username
只监控指定用户
htop --no-color
无颜色输出
htop --tree
树形显示

htop 交互命令 17

F1 / h / ?
显示帮助
F2 / S
设置
F3 / /
搜索
F4 / \
过滤
F5 / t
树形显示
F6 / >
排序字段
F7 / [
降低优先级
F8 / ]
提高优先级
F9 / k
杀进程
F10 / q
退出
Space
标记进程
U
取消所有标记
c
显示完整命令路径
H
显示/隐藏用户进程
K
显示/隐藏内核线程
p
显示/隐藏完整路径
t
显示/隐藏时间列

系统负载指标 Load Average 6

1分钟 / 5分钟 / 15分钟
系统平均负载
> CPU核心数
系统过载
tasks: total / running / sleeping / stopped / zombie
进程统计
%Cpu(s): us / sy / ni / id / wa / hi / si / st
CPU 使用率
MiB Mem: total / free / used / buff/cache
内存使用
MiB Swap: total / free / used
交换空间使用

参数矩阵

参数作用示例
top -b -n 1批处理输出单帧,便于接管道或写脚本top -b -n 1 | head -20
top -p <pid>只监控指定进程top -p 3120 -d 2
top -u <user>只看某用户的进程top -u tom
top -d <n>设置刷新间隔(秒)top -d 2
P / M / T / N交互排序:CPU / 内存 / 时间 / PID进入 top 后按 M
top -o %MEM批处理模式也能按内存排序top -b -n 1 -o %MEM
k杀进程(输入 PID,无二次确认)top 中按 k 后输 PID
c切换显示完整命令行路径top 中按 c
htop彩色交互式替代,支持鼠标与过滤htop --tree
1分钟/5分钟/15分钟load average 三个值,与核心数比较才有意义与 nproc 结果对比
tasks 行running / sleeping / zombie 进程计数关注 zombie 数
%Cpu(s) 行us 用户 / sy 系统 / id 空闲 / wa IO 等待wa 高说明 IO 阻塞

易错点与避坑指南

现象load average 很高但 CPU 使用率却很低。

原因load 统计的是「可运行 + 不可中断」任务,磁盘或网络 IO 阻塞会让进程进入 D 状态而 CPU 空闲。

处置看 %Cpu(s) 里的 wa(IO 等待)是否高,并检查 tasks 行是否有大量 D 状态进程。

现象内存 free 很低,怀疑内存不足。

原因Linux 把空闲内存用于页缓存(buff/cache),这部分可随时回收。

处置看 available 那一列;同时检查 swap 是否在持续读写,只有两者都告急才是真压力。

现象top 里按 k 误杀了关键进程。

原因k 立即发送信号且无二次确认。

处置输入 PID 前再次确认;关键环境先记录 PID 以便恢复。

现象采到的瞬时数据不准,几次运行结果差很多。

原因top 默认每 3 秒刷新,单帧是采样瞬间而非稳定值。

处置脚本采集用 top -b -n 1 取单帧,或用 -d 1 缩短间隔取多帧判断趋势。

现象大量僵尸进程(Z 状态)无法清除。

原因僵尸进程的父进程已死,需要由父进程回收。

处置找到 PPID 并重启父进程;kill 子进程无效。

现象swap 一直在读写,但系统内存看起来还够用。

原因页面缓存之外的活跃内存已超出物理内存,或 vm.swappiness 设置偏高导致过早换出。

处置先用 free -h 看 available 而非 free;确认换页是持续还是瞬时,瞬时换页属正常回收行为。

排障路径

  1. 1取一帧输出做脚本判断

    top -b -n 1 | head -3

    批处理不刷新只输出一次,可直接 grep 指标行做阈值判断。

  2. 2看谁在吃内存

    top -b -n 1 -o %MEM | head -12

    -o 让批处理也能排序,不用进交互界面。

  3. 3盯住单个进程的波动

    top -p 3120 -d 2

    -d 2 把刷新降到 2 秒,比默认更适合盯突发占用。

  4. 4确认 CPU 核数以判断 load 是否过高

    nproc

    load 平均值必须与核数比较才有意义,单看绝对值会误判。

  5. 5需要鼠标与过滤时换 htop

    htop --tree

    支持点击排序、F4 过滤、树形看父子进程,多进程排查更直观。

命令示例

只看最耗 CPU 的 10 个进程

top -b -n 1 | head -20

-b 批处理模式不刷新、只输出一次,-n 1 表示跑一轮就退出——这样能直接接管道或写进脚本。交互式 top 里按 P 也是按 CPU 排序。

输出

%Cpu(s): 12.5 us,  3.1 sy, 84.4 id,  0.0 wa
Tasks: 231 total,   1 running, 230 sleeping
%Cpu  PID COMMAND
 48.2 3120 node
 21.7  980 postgres

只监控指定 PID 的资源占用

top -p 3120 -d 2

-d 2 把刷新间隔设为 2 秒,比默认的 3 秒更适合盯突发占用。定位「哪个进程吃内存」时配合交互模式的 M 键按内存排序更快。

输出

%Cpu(s):  5.1 us,  1.0 sy, 93.9 id
  PID USER      PR  VIRT    RES   SHR S  %CPU  %MEM
 3120 user      20   1.2g  318m  22m S  48.2   8.1

用排序键直接找出内存占用最高的进程

top -b -n 1 -o %MEM | head -12

-o %MEM 让批处理模式也能排序,不用进交互界面。临时排查一行命令即可拿到结果,比进 top 再按 M 更适合写进脚本。

输出

%Cpu  PID COMMAND
 18.2 1452 chrome
 12.7 2031 electron
  9.4 3120 node

常见坑与注意事项

  • load average 要与 CPU 核心数比较才有意义;load 高而 CPU idle 也高,通常是磁盘或网络 IO 在阻塞,不是 CPU 不够。
  • D 状态(不可中断睡眠)进程正在等内核 IO,连 kill -9 都要等 IO 返回;这类进程堆积应查存储瓶颈而不是重启应用。
  • top 默认 3 秒刷新,采集瞬时数据容易失真;批处理用 top -b -n 1 输出单帧。
  • free 显示 free 很低不代表内存不足,Linux 会把空闲内存用作页缓存;判断标准是 available 与 swap 是否持续读写。
  • 在 top 里按 k 杀进程会立即发送信号且不二次确认,输入 PID 前先确认目标。

提示

  • top 是系统自带,htop 需要安装但界面更友好、功能更强大。
  • Load Average 超过 CPU 核心数表示系统过载,需要排查高负载进程。
  • wa(IO wait)高表示磁盘 IO 瓶颈,hi/si(中断)高表示网络或硬件问题。
  • top -b -n1 > s1.txt 采样后隔 30 秒再采一次,两份文件 diff 出突增进程,比盯屏幕准。
  • 按 1 键展开每个进程的线程视图,Java/Python 这类多线程进程的总 %CPU 是各线程之和,不是单线程值。
  • htop 里 F5 按线程显示、F6 排序、F7/F8 调整 nice 值,可替代多次 sudo renice 操作。

常见问题

load average 多少算过高?

判断标准不是绝对值,而是和 CPU 核心数比:1 分钟、5 分钟、15 分钟三个值持续高于核心数就说明有进程排队。在 top 里同时看 tasks 行的 running 与 zombie 数量,以及 %Cpu(s) 里的 us 实际占用——load 高但 CPU idle 很高,通常是磁盘或网络 IO 在阻塞,不是 CPU 不够。

top 里 D 状态进程意味着什么?

D 是不可中断睡眠(uninterruptible sleep),进程正在等待内核级 IO 完成,通常是磁盘或网络读写卡住。它比 R(运行中)更值得关注,因为 D 状态进程连 kill -9 都要等 IO 返回才能结束。如果 D 状态进程持续堆积,说明底层存储或网络已经严重超载,此时重启应用往往无效,要先排查 IO 瓶颈。

top 和 htop 怎么选?

top 是系统自带、无需安装,脚本里或只有一台裸机 SSH 时最省事;htop 要额外安装,但支持鼠标点选排序、树形显示进程父子关系、以及 F4 直接过滤,排查多进程场景比 top 直观得多。两者键盘交互键位也不同:top 按 P 按 CPU 排序、M 按内存排序,htop 用 F6 或直接点击表头排序。

top 显示的内存占用为什么和 free 不一致?

因为 Linux 会把空闲内存拿去做页缓存,所以 MiB Mem 里的 free 很低而 buff/cache 很高并不代表内存不足——这部分缓存可被随时回收。判断是否真的缺内存要看 available 那一列,以及是否发生了 swap。若 available 也很低且 swap 在持续读写,才是真的内存压力。

在 top 里怎么按条件只看某个用户的进程?

两种方式:启动时用 top -u username 直接限定用户,输出第一列为空说明筛选没生效时先确认用户名拼写;或者启动 top 后在交互中输入 u 再回车,输入目标用户名。只想盯某个 PID 则用 top -p 1234,比进去后再逐层翻找快得多。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们