top 命令能够实时显示系统中各个进程资源占用情况。可以用它来快速排查系统性能问题。

先行概念

  • 用户空间,常规进程所在空间,用户空间非特权区域,不能直接访问硬件设备
  • 内核空间,操作系统所在空间,能与设备控制器通讯,控制用户区域进程运行状态

使用举例

直接使用

默认进入 top 时,各进程是按照 CPU 的占用量来排序的:

top

解释:

  • 第一行,系统时间,已运行天数,登录用户数,1 分钟,5 分钟,15 分钟负载
  • 第二行,运行任务数
  • 第三行,CPU 运行状态
    • us 用户空间占用 CPU 百分比
    • sy 内核空间占用 CPU 百分比
    • ni 改变过优先级的进程占用 CPU 百分比
    • id 空闲 CPU 百分比
    • wa IO 等待占用 CPU 的百分比
    • hi 硬中断(Hardware IRQ)占用 CPU 的百分比
    • si 软中断(Software Interrupts)占用 CPU 的百分比
  • 第四行,内存使用
    • total 全部物理内存
    • free 空闲内存
    • used 已使用内存
    • buff/cache 缓存内存
  • 第五行,swap 交换分区信息
  • 第六行,空行
  • 第七行及以下,各进程的运行状态

第七行信息,包括:

  • PID
  • USER
  • PR 进程优先级
  • NI 负值表示高优先级
  • VIRT 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES
  • RES 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA
  • SHR 共享内存大小,单位 kb
  • S 进程状态,D= 不可中断的睡眠状态;R= 运行;S= 睡眠;T= 跟踪 / 停止;Z= 僵尸进程
  • %CPU 上次更新到现在的 CPU 时间占用百分比
  • %MEM 进程使用的物理内存百分比
  • TIME+ 进程使用的 CPU 时间总计,单位 1/100 秒
  • COMMAND 进程名

查看每个 CPU 状态

在交互状态下按下 1 展开,查看每个 CPU 情况。

改变排序规则

按下 Shift + < 或者 > 来改变排序规则。

显示完整命令:

top -c

显示指定进程信息

top -p 12002

交互命令

  • h 显示帮助
  • c 切换名字与完整路径
  • m 切换内存显示方式
  • i 忽略闲置和僵死进程
  • r 重新设置进程优先级别
  • P CPU 使用百分比排序