Linux 中的 top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。
top 是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。
比较准确的说,top 命令提供了实时的对系统处理器的状态监视,它将显示系统中 CPU 最 “敏感” 的任务列表,该命令可以按 CPU 使用,内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等。
top [options]
参数 | 描述 |
---|---|
options | top 命令使用的参数。 |
选项 | 含义 |
---|---|
-b | 批处理。 |
-c | 显示完整的命令。 |
-d | 表示top命令显示的页面更新一次的间隔,默认是 5 秒。 |
-I | 忽略失效过程。 |
-s | 保密模式。 |
-S | 累积模式。 |
-i<时间> | 设置间隔时间。 |
-u<用户名> | 指定用户名。 |
-p<进程号> | 指定进程。 |
-n<次数> | 循环显示的次数。 |
在 top 命令的显示窗口中,还可以使用按键,进行一下交互操作。
交互指令 | 含义 |
---|---|
?, h | 显示交互模式的帮助。 |
P | 按照 CPU 的使用率排序,默认就是此选项。 |
M | 按照内存的使用率排序。 |
N | 按照 PID 排序。 |
T | 按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序。 |
k | 按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号。 |
r | 按照 PID 给某个进程重设优先级(Nice)值。 |
q | 退出 top 命令。 |
top 命令显示部分总体分为两部分,即表头部分分为五行,以及下面主体部分,动态显示的进程信息。
第一行为任务队列信息,具体内容如下表所示:
内 容 | 说 明 |
---|---|
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间.本机己经运行 1 天 13 小时 32 分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00,0.00,0.00 | 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数) |
第二行为进程信息,具体内容如下表所示:
内 容 | 说 明 |
---|---|
Tasks: 95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程数 |
0 stopped | 正在停止的进程数 |
0 zombie | 僵尸进程数。如果不是 0,则需要手工检查僵尸进程 |
第三行为 CPU 信息,具体内容如下表所示:
内 容 | 说 明 |
---|---|
Cpu(s): 0.1 %us | 用户模式占用的 CPU 百分比 |
0.1%sy | 系统模式占用的 CPU 百分比 |
0.0%ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.7%id | 空闲 CPU 占用的 CPU 百分比 |
0.1%wa | 等待输入/输出的进程占用的 CPU 百分比 |
0.0%hi | 硬中断请求服务占用的 CPU 百分比 |
0.1%si | 软中断请求服务占用的 CPU 百分比 |
0.0%st | st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
第三行为物理内存信息,具体内容如下表所示:
内 容 | 说 明 |
---|---|
Mem: 625344k total | 物理内存的总量,单位为KB |
571504k used | 己经使用的物理内存数量 |
53840k&ee | 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存 |
65800k buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息,具体内容如下表所示:
内 容 | 说 明 |
---|---|
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
Ok used | 已经使用的交换分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交换分区的大小 |
我们通过 top 命令的第一部分就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。
ps 命令主体部分显示的信息是动态展示进程信息的。
显示信息 | 描述 |
---|---|
PID | 进程的 ID。 |
USER | 该进程所属的用户。 |
PR | 优先级,数值越小优先级越高。 |
NI | 优先级,数值越小、优先级越高。 |
VIRT | 该进程使用的虚拟内存的大小,单位为 KB。 |
RES | 该进程使用的物理内存的大小,单位为 KB。 |
SHR | 共享内存大小,单位为 KB。 |
S | 进程状态。 |
%CPU | 该进程占用 CPU 的百分比。 |
%MEM | 该进程占用内存的百分比。 |
TIME+ | 该进程共占用的 CPU 时间。 |
COMMAND | 进程的命令名。 |
实例 | 描述 |
---|---|
top | 显示进程信息。 |
top -d 3 | 设置 top 命令更新时间为 3 秒。 |
top -p pid | 显示指定的进程信息。 |
top 命令默认的刷新时间为 5 秒,我们可以通过 d 参数修改刷新时间。
top
我们使用 top 命令,显示进程信息,具体命令如下:
top
运行后,终端输出如下:
我们看到,我们使用了 top 命令,动态显示了所有进程的信息,运行完毕后,我们按下 q 即可退出 top 命令。
top -d num
我们使用 top 命令,加上 d 参数,可以设置 top 命令的刷新时间,具体命令如下:
top -d 3
运行后,终端输出如下:
我们看到,此时动态显示了所有进程的信息,并且刷新时间变成了 3 秒。
top -p pid
我们使用 top 命令,加上 p 参数跟上进程 id,可以查看指定进程的信息,具体命令如下:
top -p 1195
运行后,终端输出如下:
我们看到,此时只显示了指定进程的进程信息。
top M
我们使用 top 命令,查看所有进程的信息,具体命令如下:
top
运行后,终端输出如下:
我们看到,此时显示了所有进程的进程信息,默认是按照 CPU 使用率排序的,现在,我们按下 M 可以实现按照内存排序,按下后,如下图所示:
我们看到,此时是按照内存排序了,即,我们使用了 top 命令,加上 M 交互命令,可以实现让 top 命令安装内存排序。
Linux 中的 top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。
top 是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。