蔚淦丞
发布于 2026-10-28 / 2 阅读
0
0

top命令常用操作

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 average1/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 计数

评论