做什么

实时显示进程列表 + 系统资源使用。每 3 秒刷一次。

top

顶部摘要

top - 10:23:45 up 23 days, ...   load average: 0.45, 0.52, 0.61
Tasks: 234 total, 1 running, 233 sleeping
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 92.3 id, 0.4 wa, 0.0 hi, 0.0 si
MiB Mem :  7900.0 total,  5000.0 free,  1200.0 used,  1700.0 buff/cache
MiB Swap:  2000.0 total,  2000.0 free,     0.0 used

CPU 行字段:

  • us 用户态
  • sy 内核态
  • id 空闲
  • wa IO 等待 ★ 大于 20% 说明磁盘瓶颈
  • si 软中断

进程列表列

PID  USER  PR  NI  VIRT  RES  SHR  S  %CPU  %MEM  TIME+  COMMAND
1234 root  20   0  1.2G  50M  10M  S  0.5   0.6   1:23   nginx

交互快捷键(运行时按)

作用
q 退出
h 帮助
M 按内存排序(大写)
P 按 CPU 排序
T 按累计 CPU 时间
c 切换显示完整命令行
1 显示每个 CPU 核
k 杀进程(输 PID)
r renice 进程
u 只显示某用户
f 选要显示的列
W 保存当前布局
space 立刻刷新
ds 改刷新间隔

常用启动参数

top -u wadely              # 只看某用户
top -p 1234,5678           # 只看特定 PID
top -d 1                   # 1 秒刷新
top -b -n 1                # 批处理模式(输出一次后退出,脚本用)

脚本里用

# 拿当前各种指标
top -b -n 1 | head -20

# 取 5 秒内的 CPU 占用
top -b -n 2 -d 5 | grep "myapp" | tail -1 | awk '{print $9}'

现代替代

  • htop:彩色 + 鼠标 + 树状(下一篇)
  • btop:图表 + 美观(apt install btop
  • glances:综合面板

  • 第一次启动 top 显示的 CPU% 是"自启动以来累计"——看后面几次刷新才准
  • 大量进程时 top 自己也吃 CPU——用 -d 5 减刷新频率
  • 大写小写键功能不同——P 排 CPU、p 是别的