top 命令常用操作速查
以下示例均来自aliyun服务器真实输出,可对照实操验证。
1. 基础用法
top # 交互模式,每3秒刷新
top -b -n 1 # 批处理模式,只输出一次(适合脚本/笔记采集)
头部信息解读(本机实际输出)
top - 14:29:26 up 14 days, 7:16, 1 user, load average: 1.74, 1.42, 1.34
Tasks: 138 total, 2 running, 136 sleeping, 0 stopped, 0 zombie
%Cpu(s): 71.0 us, 9.7 sy, 0.0 ni, 19.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3563.5 total, 717.8 free, 2368.1 used, 723.5 buff/cache
MiB Swap: 2048.0 total, 1971.0 free, 77.0 used. 1195.4 avail Mem
| 字段 | 含义 |
|---|---|
load average | 1/5/15分钟平均负载,超过CPU核数需关注 |
us/sy/id/wa | 用户态/内核态/空闲/IO等待 CPU占比 |
buff/cache | 可回收缓存,不算真正占用 |
avail Mem | 应用程序实际可用内存(比free更准确) |
2. 排序(最常用)
命令行指定排序字段
top -b -n 1 -o %CPU # 按CPU使用率降序
top -b -n 1 -o %MEM # 按内存使用率降序
top -b -n 1 -o RES # 按物理内存占用降序
top -b -n 1 -o TIME+ # 按累计运行时间降序
交互模式下切换排序
在 top 运行中按以下键:
P— 按 %CPU 排序M— 按 %MEM 排序T— 按 TIME+ 排序N— 按 PID 排序
本机按内存排序实际输出
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2124184 root 20 0 3295344 848196 29580 S 0.0 23.2 4:30.94 java
1240 admin 20 0 21.8g 658152 36228 S 0.0 18.0 12:36.73 openclaw-gatewa
466 root 20 0 289724 177156 170096 S 0.0 4.9 6:31.16 systemd-journal
3028 root 20 0 657752 97700 0 S 0.0 2.7 0:01.15 searxng worker-
938 root 20 0 2416184 66400 27568 S 0.0 1.8 16:03.09 dockerd
💡 java 进程占 23.2% 内存(848MB),是当前最大内存消费者。
3. 按线程显示
top -H # 交互模式,显示所有线程
top -b -n 1 -H # 批处理模式
本机线程模式实际输出
Threads: 355 total, 8 running, 347 sleeping, 0 stopped, 0 zombie
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2584260 root 20 0 1224028 229256 56244 R 68.8 6.3 0:01.66 node
2584262 root 20 0 1224028 229256 56244 S 6.2 6.3 0:00.15 node
2584263 root 20 0 1224028 229256 56244 R 6.2 6.3 0:00.14 node
2584264 root 20 0 1224028 229256 56244 S 6.2 6.3 0:00.15 node
💡 注意头部从
Tasks变为Threads,同一进程的多个线程共享 VIRT/RES,但 %CPU 各自独立。
交互模式中切换
H— 切换 进程/线程 视图
4. 只看指定进程
top -p <PID> # 只看单个进程
top -p 1234,5678 # 看多个进程(逗号分隔)
top -b -n 1 -p 2124184 # 批处理模式
本机查看 java 进程实际输出
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2124184 root 20 0 3295344 848196 29580 S 0.0 23.2 4:30.95 java
💡 Tasks 总数变为 1,只聚焦目标进程,排查问题时非常实用。
配合 pgrep 快速定位
top -p $(pgrep -d',' nginx) # 查看所有nginx进程
top -H -p $(pgrep -x java) # 查看java所有线程
5. 其他实用交互快捷键
| 按键 | 功能 |
|---|---|
k | 向选中进程发送信号(默认SIGTERM) |
r | 调整进程优先级(renice) |
f | 选择显示的列 |
c | 显示完整命令路径 |
1 | 展开每个CPU核心的使用情况 |
E | 切换内存单位(KB/MB/GB) |
q | 退出 |
6. 常见排查场景速查
| 场景 | 命令 |
|---|---|
| 找出CPU最高的进程 | top -b -n 1 -o %CPU | head -10 |
| 找出内存泄漏嫌疑进程 | top -b -n 1 -o RES | head -10 |
| 某进程CPU飙高看线程 | top -H -p <PID> |
| IO等待高确认瓶颈 | 看 %wa + iostat -x 1 |
| 僵尸进程检查 | 看头部 zombie 计数 |