Linux top 命令详解

top 命令在日常系统维护中算是常用命令了,当遇到性能问题时,第一时间就想到了 top。虽然 htop 更加强大,但毕竟需要另行安装。在内网的主机上,top 还是比较常用些。

之前在《Linux 进程查看及管理工具》中介绍过 top 命令的简单用法,现在来详细讲讲它的命令及参数使用。

top 命令输出

默认运行 top 时,会输出类似如下信息:

topviews

系统运行时间和平均负载

第一行显示为系统运行状态,其字段意思如下:

  • 当前时间;
  • 系统已运行时间;
  • 当前登录用户数;
  • 最近5分钟,10分钟,15分钟的平均负载。

可使用 l 命令进行隐藏或显示。

任务信息

第二行显示的是任务或进程的状态,其字段意思如下:

  • 总进程数;
  • 正在运行的进程数;
  • 处于睡眠状态的进程数;
  • 已停止的进程数;
  • 处于僵死状态的进程数。

可使用 t 命令进行隐藏或显示。

CPU 状态信息

第三行显示的是 CPU 状态,这里显示了不同模式下的所占 CPU 时间的百分比。这些不同的 CPU 时间表示:

  • us,user:运行(未调整优先级的) 用户进程的 CPU 时间;
  • sy,system:运行内核进程的 CPU 时间;
  • ni,niced:运行已调整优先级的用户进程的 CPU 时间;
  • wa,IO wait:用于等待 IO 完成的 CPU 时间;
  • hi:处理硬件中断的 CPU 时间;
  • si:处理软件中断的 CPU 时间;
  • st:这个虚拟机被 hypervisor 偷去的 CPU 时间。如果当前处于一个 hypervisor 下的 vm,实际上 hypervisor 也是要消耗一部分 CPU 处理时间的。

可使用 t 命令切换显示效果,隐藏及显示。

内存使用信息

第四第五行显示的是内存和交换空间的使用信息,类似于 free 命令。

物理内存显示如下:

  • 全部可用内存;
  • 已使用内存;
  • 空闲内存;
  • 缓冲内存。

交换空间部分显示的是:

  • 全部可用交换空间;
  • 已使用交换空间;
  • 空闲交换空间;
  • 缓冲交换空间。

可使用 m 命令切换显示效果,隐藏及显示。

具体进程信息

再往下,就是具体的进程信息了,其字段显示为:

PID

进程 ID,进程的唯一标识符。

USER

进程所有者的实际用户名。

PR

进程的调度优先级。这个字段的一些值是 rt。这意味这这些进程运行在实时态。

NI

进程的 nice 值(优先级)。越小的值意味着越高的优先级。

VIRT

进程使用的虚拟内存。

RES

驻留内存大小。驻留内存是任务使用的非交换物理内存大小。

SHR

SHR是进程使用的共享内存。

S

这个是进程的状态。它有以下不同的值:

  • D – 不可中断的睡眠态;
  • R – 运行态;
  • S – 睡眠态;
  • T – 被跟踪或已停止;
  • Z – 僵尸态。

%CPU

自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM

进程使用的可用物理内存百分比。

TIME+

任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND

运行进程所使用的命令。

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组 ID 和其他更多的信息。

交互命令

上面介绍 top 显示界面时,就已经介绍过了一些切换显示的命令,下面会对更多的命令进行说明。

h

帮助命令,我们可以使用 h 或者 ? 显示帮助菜单。

tophelp

空格键/回车键

top 命令默认3秒刷新一次,可使用空格键或回车键进行手动刷新。

A

切换交替显示模式。这个命令在全屏和交替模式间切换。在交替模式下会显示4个窗口,分别关注不同的重点:

  1. Def:默认字段组;
  2. Job:任务字段组;
  3. Mem:内存字段组;
  4. Usr:用户字段组。

这四组字段共有一个独立的可配置的概括区域和它自己的可配置任务区域。4个窗口中只有一个窗口是当前窗口。当前窗口的名称显示在左上方,只有当前窗口才会接受你键盘交互命令。

topA

我们可以用 aw 在4个窗口间切换。a 移到后一个窗口,w 移到前一个窗口。用 g 命令你可以输入一个数字来选择当前窗口。

B

触发粗体显示。重要信息会以加粗字体显示,这个命令可以切换粗体显示。(默认状态即为加粗状态,可使用此命令取消加粗。)

d/s

d 命令或 s 命令,设置显示的刷新间隔,单位是秒。

topd

l/t/m

切换负载、任务、内存信息的显示。介绍显示界面的时候已介绍过。

f

字段管理。用于选择你想要显示的字段,用 * 标记的是已选择的。

上下键选择字段,空格键选择是否显示,选择完成后 q 键退出。

topf

topf2

R

反向排序。切换反向/常规排序。

c

触发命令。切换是否显示进程启动时的完整路径和程序名。

i

切换显示空闲任务。默认显示空闲任务,可使用 i 命令进行隐藏。

V

切换为进程树视图。

topv

Z

更改配色,可为不同的任务区选择不同的颜色。

topz

topz2

z

切换彩色显示,即打开或关闭彩色显示。

x/y

切换高亮信息,x 将排序字段高亮显示(纵列);y 将运行进程高亮显示(横行)。

u

显示特定用户的进程。你会被提示输入用户名。空白将会显示全部用户。

topu

n/

n 命令或 # 命令,设置最大显示的任务数量。

k

结束进程。输入进程号可结束进程,默认为高亮进程的进程号。

r

重新设置一个任务的调度优先级。

命令行选项

上面介绍的命令,很多都有命令行选项,可直接激活。比如 -i-u 之类的,具体可使用 man top 来查看。