每天一个 Linux 命令(5)—— top

222 阅读6分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

命令简介

top 命令是 Linux 系统中常用的 性能分析工具能够实时显示系统中各个进程的资源占用情况,类似于 Windows 的任务管理器。

top 命令是 实时 显示系统的一些监控指标,例如进程的运行状态、资源占用、以及运行时间等信息,在 top 命令循环抽样,不断刷新显示各种统计信息期间,我们可以利用其提供的交互界面,使用相关的字符命令,自定义 top 命令的显示形式与输出内容。例如选择显示的字段和形式、设置排序的字段等。

命令格式

top [参数]

命令参数

参数介绍
-b批处理 方式运行 top 命令。采用批处理方式时,可以把 top 命令的输出信息发送给其他程序或写入文件中。直至运行 -n 选项指定的循环次数,或按下 ctrl-c 组合键之后方退出。
-c切换 COMMAND 显示模式。有两种显示模式,一种是只显示命令的名称,另一种是显示完整的命令。
-d指定数据取样与屏幕刷新的时间间隔(单位为秒),默认的时间间隔是 3 秒。
-H在以进程或线程为单位显示统计数据之间切换。
-i在显示或禁止显示空闲进程或僵尸进程之间切换。
-Mk(1024)M(1024^2)、或 G(1024^3) 为单位显示内存的统计数据。
-n num指定最大的抽样刷新显示次数。循环显示指定的次数后,退出 top 命令。
-p pids监控指定进程 ID 的进程。多个进程 ID 之间需加逗号分隔符。也可以同时指定多个 -p 选项,每个选项指定一个进程 ID。不管采用哪一种方式,最多只能同时指定 20 个进程 ID。
-s安全操作模式。
-S累加时间模式,进程的 CPU 时间包括其已终止运行的子进程占用的 CPU 时间。
-u euser仅监控匹配有效用户名或用户 ID 的进程。
-U user仅监控指定用户名或用户 ID 的进程。

交互命令

top 命令是实时显示监控信息,top 提供了一个交互页面,因此我们可以输入一下交互命令进行操作展示。

命令介绍
<Enter>, <Space>按下 Enter 键或空格键,可以立即刷新屏幕。
?, h查看交互命令的使用说明。
b加黑或常规显示运行进程。
B在加黑与常规显示之间切换。
c在显示命令行与命令名之间切换。
d, s修改数据抽样刷新屏幕的时间间隔(单位秒),这个命令不能用于安全模式。
f, o选择显示的字段和排序字段。进入选择页面后,使用空格进行选择,q 命令退出。
F, O选择排序字段。进入单独的窗口,选择排序字段。
i显示所有的主要进程(包括空闲进程)或仅显示当前正在运行的进程。
k终止进程。提示时输入进程 ID 和欲发送的信号(信号编码或信号名均可)。默认的信号是 SIGTERM。注意,这个命令不能用于安全模式。
l在显示或禁止显示系统负载一行数据之间切换。
m在显示或禁止显示内存与交换区统计数据之间切换。
n, #设置显示的最大进程数量。
q退出 top 命令。
r调整进程的优先级。提示时输入进程 ID 和优先级调整值。负数表示调高调度优先级,正数表示调低调度优先级。注意,这个命令不能用于安全模式。
R选择从高到低排序还是从低到高排序。
S在累加时间模式和常规时间模式之间切换。
t在显示或禁止显示 CPU 统计数据之间切换。
u选择用户。提示时输入用户 ID 或用户名,仅显示匹配指定用户 ID 的进程。
x高亮显示或常规显示当前排序字段一列。
y高亮显示或常规显示当前正在运行的进程。
z彩显或单显统计数据汇总区与进程观察区。
<排序字段左移一列(除非当前的排序字段位于第一列)
>排序字段右移一列(除非当前的排序字段位于最后一列)

输出内容

top 命令的输出分为 4 部分:统计数据汇总区信息与提示行显示字段标题行进程观察区

统计数据汇总区包括终端窗口的前 5 行:

  1. 第一行给出了系统当前运行状态的汇总统计信息。其中依次是当前的系统时间(即数据抽样时间)、系统自启动迄今为止的运行时间、系统中现有注册用户的数量,以及在最近 1 分钟、5 分钟和 15 分钟内的平均系统负载值。

  2. 第二行是所有进程运行状态的汇总统计数据。其中第一个字段(total)表示系统当前共有多少个进程。

  3. 第三行是 CPU 工作状态的分类统计信息。

  4. 第四行是系统物理内存使用情况的汇总统计信息。

  5. 第五行是交换区使用情况的汇总统计信息。

对于每个进程,top 命令能够提供 26 个统计数据,受限于屏幕的显示宽度,通常只能显示 12 个字段。分别为 PID、PPID、RUSER、UID、USER、GROUP、TTY、PR、NI、P、%CPU、TIME、TIME+、%MEM、VIRT、SWAP、RES、CODE、DATA、SHR、nFLT、nDRT、S、COMMAND、WCHAN 和 Flags 等 26 个字段。在上述字符串中,大写字母表示显示相应的字段,且按字母的排列顺序显示相应的字段。若想显示其他字段信息,可以输入 f 字符命令,然后输入相应字段的小写字母,再输入大写字母。若想改变输出字段的排列顺序,可以输入 o 字符命令,连续输入任何小写字母,可以把相应输出字段依次后移一个位置;连续输入任何大写字母,可以把相应输出字段依次前移一个位置。通过调整字母的排列位置,达到调整输出字段先后顺序的目的。

参考文档