编者注:本文为历史博文归档;涉及 Linux 发行版与工具链版本请以当前官方文档为准。引用外链图片可能失效,阅读时请注意时效性。

top

以下是对 top 命令输出界面的逐行详解。

第一行:系统概览

字符含义
top - 10:03:19当前系统时间
up 137 days , 10:40系统已运行时间(Uptime)
2 user当前在线用户数
load average: 0.00, 0.01, 0.05系统负载(Load Average)。三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值
说明2 user 包含系统用户。

第二行:任务统计

字符含义
Tasks : 92 total总进程数
2 running正在运行的进程数
90 sleeping正在睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数
关于僵尸进程(Zombie Process)
一个子进程在其父进程没有调用 wait()waitpid() 的情况下退出,该子进程即成为僵尸进程。如果其父进程还存在而一直不调用 wait,则该僵尸进程将无法回收;等到其父进程退出后,该进程将被 init 进程回收。

第三行:CPU 状态

字符含义
%Cpu(s): 0.3 us用户空间占用 CPU 百分比 (user)
0.3 sy内核空间占用 CPU 百分比 (system)
0.0 ni用户进程空间内改变过优先级的进程占用 CPU 百分比 (nice)
99.3 idCPU 空闲率 (idle)
0.0 wa等待 I/O 的 CPU 时间百分比 (iowait)
0.0 hi硬中断(Hardware IRQ)占用 CPU 的百分比
0.0 si软中断(Software Interrupts)占用 CPU 的百分比
此处显示 CPU 的整体使用情况。

第四行:物理内存

字符含义
KiB Mem : 1016916 total内存总量(示例中约为 1G)
82280 free空闲内存量
233848 used已使用内存量
700788 buff/cache缓存的内存量
此处显示物理内存的使用率。

第五行:交换分区 (Swap)

字符含义
KiB Swap: 0 total交换区总量
0 free交换区空闲量
0 used交换区使用量
说明:示例环境中未配置 Swap 分区,故数值均为 0。

第六行:进程列表

字符含义
PID进程号
USER进程创建者
PR进程优先级
NINice 值。越小优先级越高,范围 -20 至 20(用户设置最大 19)
VIRT进程使用的虚拟内存总量,单位 KB。VIRT = SWAP + RES
RES进程使用的、未被换出的物理内存大小,单位 KB。RES = CODE + DATA
SHR共享内存大小,单位 KB
S进程状态。D=不可中断睡眠,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
%CPU进程占用 CPU 百分比
%MEM进程占用内存百分比
TIME+进程运行时间
COMMAND进程名称

优先级说明

  • PR 越低,优先级越高。计算公式:PRI(new) = PRI(old) + nice
  • PR 中的 rt 为实时进程优先级即 rt_priorityprio = MAX_RT_PRIO - 1 - p->rt_priority
  • MAX_RT_PRIO = 99prio 大小决定最终优先级。这意味着 rt_priority 值越大,优先级越高。内核提供的修改优先级的函数是修改 rt_priority 的值,所以值越大,优先级越高。
  • 示例:改变优先级。进入 top 后按 r → 输入进程 PID → 输入 nice 值。

top 交互命令

在进入 top 界面后,可使用以下快捷键进行操作:

  • P:以占据 CPU 百分比排序。
  • M:以占据内存百分比排序。
  • T:以累积占用 CPU 时间排序。
  • q:退出命令。按 q 键退出 top 查看页面。
  • s:修改刷新时间间隔。按下 s 键,然后输入数字,即可修改刷新时间间隔(单位为秒)。例如:按下 s 键,再按数字 1 键,即可实现每秒刷新一次。
  • k:终止指定的进程。按下 k 键 → 输入要杀死的进程的 PID → 按 Enter 键 → 选择信号类型(以数字标示,默认 15 为杀死)。本步可省略按 Enter 键(常用为 -9)。

kill 信号大全参考:http://www.2cto.com/os/201202/119425.html