Top程序提供了一个运行系统的动态实时视图。它可以显示系统摘要信息以及当前由Linux内核管理的进程或线程列表。 所显示的系统摘要信息的类型以及为进程显示的信息的类型,顺序和大小都是用户可配置的,并且配置可以在重新启动时保持不变。
该程序为过程操作提供了一个有限的交互式界面,以及一个用于个人配置的更广泛的界面 - 涵盖了其操作的每个方面。
一、显示区域介绍
系统信息栏
第一行(TOP)
top - 14:28:52 up 39 days, 20:56, 1 user, load average: 0.20, 0.42, 0.52
- 系统当前时间
- 系统已经运行时间
- 登录当前系统的终端数
- load average 为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数
平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。
多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。
第二行(Tasks)
Tasks: 236 total, 2 running, 234 sleeping, 0 stopped, 0 zombie
当前系统的进程情况
字段 | 含义 |
---|---|
total | 为当前系统进程总数 |
running | 为当前运行中的进程数 |
sleeping | 为当前处于等待状态中的进程数 |
stoped | 为被停止的系统进程数 |
zombie | 为被复原的进程数 |
第三行(Cpus)
%Cpu(s): 2.9 us, 1.4 sy, 0.0 ni, 95.1 id, 0.5 wa, 0.0 hi, 0.1 si, 0.0 st
分别表示了 CPU 当前的使用率
字段 | 含义 |
---|---|
us | 用户空间占用CPU百分比 |
sy | 内核空间占用CPU百分比 |
ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
id | 空闲CPU百分比 |
wa | 等待输入输出的CPU时间百分比 |
hi | 硬件中断 |
si | 软件中断 |
st | 实时 |
第四行(Mem)
GiB Mem : 62.645 total, 4.274 free, 22.042 used, 36.329 buff/cache
分别表示了内存总量、空闲内存量、当前使用量、以及缓冲使用中的内存量
第五行(Swap)
GiB Swap: 64.000 total, 63.203 free, 0.797 used. 39.949 avail Mem
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
进程列表栏
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23090 root 20 0 9.793g 818716 7460 S 14.6 1.2 1971:30 java
3617 root 20 0 20.274g 220676 7468 S 12.6 0.3 10874:44 java
23496 root 20 0 9.780g 444548 7524 S 8.3 0.7 1228:19 java
2648 elastic+ 20 0 50.123g 1.527g 7612 S 7.3 2.4 662:56.49 java
列名 | 含义 |
---|---|
PID | 进程id |
PPID | 父进程id |
RUSER | Real user name |
UID | 进程所有者的用户id |
USER | 进程所有者的用户名 |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
TIME | 进程使用的CPU时间总计,单位秒 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
%MEM | 进程使用的物理内存百分比 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
CODE | 可执行代码占用的物理内存大小,单位kb |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数。 |
S | 进程状态。 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
COMMAND | 命令名/命令行 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考 sched.h |
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
可以使用快捷键 f 更改显示内容
有时候进程的cpu使用率可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候该值得时候会超过100%,但不会超过总核数*100。
二、命令介绍
命令行
详细内容可以参考MAN 帮助文档。
命令格式:
top [-] [d] [p] [q] [c] [C] [S] [n]
参数说明:
d: 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p: 通过指定监控进程ID来仅仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S: 指定累计模式
s : 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i: 使top不显示任何闲置或者僵死进程。
c: 显示整个命令行而不只是显示命令名
交互式命令
1 显示所有的CPU核心的使用率
d/s 改变刷新平率
l - 关闭或开启第一部分第一行 top 信息的表示
t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N - 以 PID 的大小的顺序排列表示进程列表
P - 以 CPU 占用率大小的顺序排列进程列表
M - 以内存占用率大小的顺序排列进程列表
h - 显示帮助
n - 设置在进程列表所显示进程的数量
q - 退出 top
c - 显示进程的命令名称或命令行
Z - 改变颜色映射
z - 显示或关闭颜色
B - 开启/关闭加粗显示
b - 高亮显示排序字段
f - 显示和隐藏字段
F/O - 控制排序的字段
< / > - 控制排序的字段
R - 升序排列或倒序排列
x - 高亮显示排序字段
H - 显示线程
u - 仅显示指定的用户
网友评论