Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。
(译注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)
Top 命令输出
首先,让我们了解一下输出。top命令会显示系统的很多信息。我们需要理解不同部分输出的意义:默认运行时,top命令会显示如下输出:
前几行水平显示了不同系统参数的概括,接下来是进程和它们在列中的属性。
系统运行时间和平均负载
top命令的顶部显示与uptime命令相似的输出。 这些字段显示:
- 当前时间
- 系统已运行的时间
- 当前登录用户的数量
- 相应最近5、10和15分钟内的平均负载
可以使用’l’命令切换uptime的显示。
任务
第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用’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’命令切换。
字段/列
默认上,top显示这些关于进程的属性:
- PID: 进程ID,进程的唯一标识符
- USER: 进程所有者的实际用户名。
- PR: 进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
- NI: 进程的nice值(优先级)。越小的值意味着越高的优先级。
- VIRT: 进程使用的虚拟内存。
- RES: 驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
- SHR: SHR是进程使用的共享内存。
- S: 这个是进程的状态。它有以下不同的值:
- D - 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
- %CPU: 自从上一次更新时到现在任务所使用的CPU时间百分比。
- %MEM: 进程使用的可用物理内存百分比。
- TIME+: 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
- COMMAND: 运行进程所使用的命令。
交互命令
-
h
: 用’h’或者’?'显示交互命令的帮助菜单 - 空格或回车键: 默认在一个特定间隔(3秒)后刷新显示。要手动刷新,用户可以输入回车或者空格
-
A
: 切换交替显示模式('a’和’w’在4个 窗口间切换。'a’移到后一个窗口,'w’移到前一个窗口。用’g’命令你可以输入一个数字来选择当前窗口)
- Def (默认字段组)
- Job (任务字段组)
- Mem (内存字段组)
- Usr (用户字段组)
-
B
: 触发粗体显示 -
d或s
: 设置显示的刷新间隔(以秒为单位) -
l 、t、m
: 切换负载、任务、内存信息的显示 -
f
: 字段管理(空格或d设置显示与否, s设置排序) -
R
: 反向排序 -
c
: 切换显示进程启动时的完整路径和程序名 -
i
: 切换显示空闲任务 -
V
: 切换树视图 -
Z
: 改变top命令的输出颜色的屏幕。可以为8个任务区域选择8种颜色 -
z
: 切换彩色,即打开或关闭彩色显示 -
x、y
: 切换高亮信息:'x’将排序字段高亮显示(纵列);'y’将运行进程高亮显示(横行) -
u
: 显示特定用户的进程 -
n或者#
: 设置最大显示的任务数量 -
k
: top命令中最重要的一个命令之一。用于发送信号给任务(通常是结束任务) -
r
: 重新设置一个任务的调度优先级
命令行选项
-
-b
: 批处理模式启动top命令。当你想要在文件中保存输出时是很有用的
-
top -p 6115 -n 3 -b | grep 'java' > log.log
-
-c
: 显示进程启动时的完整路径和程序名 -
-d
: 设置延迟间隔 -
-i
: 切换显示空闲进程 -
-n
: 设置迭代数量 -
-p
: 监控特定的PID -
-u 或 -U
: 用户名 或者 UID
- 查看用户UID:
id 用户名
-
-H
: 一行显示一个线程,否则一行显示一个进程
Reference