Linux top命令简介

top 命令是最流行的性能监视工具之一,它是一个优秀的交互式工具,用于实时监视系统性能。它提供系统整体性能信息,但报告进程详细信息才是 top 命令的长处。

top命令界面详解

系统整体信息区域

第一行(与uptime命令输出相同):

1
top - 01:47:56 up 1:26,  2 users,  load average: 0.00, 0.00, 0.00
  • 01:47:56 - 系统当前时间
  • up 1:26 - 系统运行时间
  • 2 users - 当前登录用户数
  • load average: 0.00, 0.00, 0.00 - 系统1分钟、5分钟、15分钟的CPU负载

第二行(进程信息):

1
Tasks: 38 total,   1 running,  37 sleeping,   0 stopped,   0 zombie
  • 38 total - 总进程数
  • 1 running - 正在运行的进程数
  • 37 sleeping - 睡眠的进程数
  • 0 stopped - 停止的进程数
  • 0 zombie - 僵死的进程数

第三行(CPU信息):

1
%Cpu(s):  0.0 us,  0.7 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • 0.0% us - 用户态进程占用CPU时间百分比
  • 0.7% sy - 内核态占用CPU时间百分比
  • 0.0% ni - 优先级调整的用户进程占用CPU时间百分比
  • 99.3% id - 空闲CPU时间百分比
  • 0.0% wa - 等待I/O的CPU时间百分比
  • 0.0% hi - 硬件中断占用CPU时间百分比
  • 0.0% si - 软件中断占用CPU时间百分比
  • 0.0% st - 被虚拟机偷取的CPU时间百分比

第四行(内存信息):

1
MiB Mem :    250.4 total,    221.1 free,     29.3 used,      8.0 buff/cache
  • 250.4 total - 物理内存总量
  • 221.1 free - 空闲物理内存
  • 29.3 used - 使用中的物理内存
  • 8.0 buff/cache - 用作缓冲区和缓存的内存

第五行(交换空间信息):

1
MiB Swap:   329.4 total,   329.4 free,     0.0 used.   219.1 avail Mem
  • 329.4 total - 交换空间总量
  • 329.4 free - 空闲交换空间
  • 0.0 used - 使用中的交换空间
  • 219.1 avail Mem - 可用内存

进程信息区域

列名 含义
PID 进程ID
USER 进程所有者
PR 进程优先级
NI nice值(优先级调整值)
VIRT 进程占用的虚拟内存
RES 进程占用的物理内存
SHR 进程使用的共享内存
S 进程状态(R=运行,S=睡眠,Z=僵死,N=低优先级)
%CPU 进程占用CPU的使用率
%MEM 进程使用的物理内存百分比
TIME+ 进程启动后占用的总CPU时间
COMMAND 进程启动命令

top命令选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 显示指定数量的进程
top -n 10

# 设置刷新间隔(秒)
top -d 2

# 显示指定用户的进程
top -u username

# 显示指定PID的进程
top -p 1234,5678

# 以批处理模式运行(非交互式)
top -b

# 以累积模式运行
top -S

# 显示线程信息
top -H

# 显示完整命令行
top -c

交互式操作指令

按键 功能
q 退出top命令
空格 立即刷新
s 设置刷新时间间隔
c 显示/隐藏完整命令行
t 显示/隐藏进程和CPU状态信息
m 显示/隐藏内存状态信息
l 显示/隐藏uptime信息
f 增加或减少进程显示字段
S 切换累计模式
P 按%CPU使用率排序
T 按TIME+排序
M 按%MEM排序
u 显示指定用户的进程
r 修改进程优先级
k 终止进程
i 只显示正在运行的进程
W 保存设置到~/.toprc文件
h 显示帮助信息

实用示例

1. 监控特定进程

1
2
3
4
5
# 监控PID为1234的进程
top -p 1234

# 监控多个进程
top -p 1234,5678,9012

2. 按内存使用排序

1
2
# 启动top后按M键,或使用命令:
top -o %MEM

3. 监控系统整体性能

1
2
# 批处理模式,每2秒刷新一次,输出5次后退出
top -b -d 2 -n 5 > top_output.txt

4. 查看线程信息

1
2
3
4
5
# 显示线程信息
top -H

# 显示特定进程的线程
top -H -p 1234

性能分析技巧

  1. CPU分析

    • 如果%us(用户态)高,说明应用程序消耗CPU
    • 如果%sy(内核态)高,说明系统调用频繁
    • 如果%wa(I/O等待)高,说明系统存在I/O瓶颈
  2. 内存分析

    • 关注used内存和avail Mem
    • 如果交换空间使用过多,说明物理内存不足
  3. 进程分析

    • 识别占用CPU和内存最多的进程
    • 注意是否有僵死进程(Z状态)
  4. 负载分析

    • load average值不应持续超过CPU核心数
    • 1分钟、5分钟、15分钟的负载趋势可以反映系统状态

与其他工具的对比

工具 特点 适用场景
top 实时交互式监控 日常系统监控
htop 增强版top,界面更友好 交互式监控,支持鼠标操作
vmstat 虚拟内存统计 系统整体性能分析
iostat I/O统计 存储性能分析
mpstat CPU使用情况统计 多CPU系统分析
ps 进程静态快照 一次性进程查看

配置文件

top命令的配置保存在~/.toprc文件中,通过W键可以保存当前设置。

注意事项

  1. top命令会消耗一定的系统资源,在系统负载很高时应谨慎使用
  2. 对于长期监控,建议使用批处理模式并将输出重定向到文件
  3. 在多核系统上,top默认显示的是所有CPU的平均值,可以按数字键1查看每个CPU的详细情况

参考资料