1、Linux top 命令
1.1 top 命令基础用法
Linux top命令用于实时显示 process 的动态。
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
实例:
显示进程信息
# top
显示完整命令
# top -c
top 和 top -c 的区别,左边是top ,右边是top -c:
设置信息更新次数
top -n 2 //表示更新两次后终止更新显示
设置信息更新时间
top -d 3 //表示更新周期为3秒
显示指定的进程信息
top -p 139 //显示进程号为139的进程信息,CPU、内存占用率等
top -p 12345 -p 6789 //每隔3秒显示pid是12345和pid是6789的两个进程的资源占用情况
1.2 top 的交互命令
https://www.cnblogs.com/baichunyu/p/15356162.html
-
过滤用户: 在top命令显示中,输入u,然后输入用户名,则可以查看相应的用户进程。
-
查看各个CPU的使用情况: 在top命令下,输入1,可以看到各个CPU的使用情况:
-
隐藏闲置或僵死的进程: 在top命令下,输入i,可以隐藏闲置或僵死的进程,效果跟输入top -i是一样的。
-
切换内存信息的单位: top命令默认以K为单位显示内存大小,这让人十分抓狂,我们可以通过大写字母E来切换内存信息区域的显示单位。小写字母m可以控制是否显示内存信息。
-
切换进程列表中的内存显示单位: 在进程列表中,内存的单位默认也是KB,我们可以通过小写字母e来切换单位。
-
粗体显示排序的列: 通过小写字母x来粗体显示当前排序的列
-
快速切换排序的列: 大写字母M以%MEM列排序,大写字母N以PID列排序,大写字母P以%CPU列排序,大写字母T以TIME+列排序。大写字母R可以将当前的排序结果反转。
-
显示完整的执行命令: 可以通过小写字母c来显示完整的执行命令(效果跟top -c相同)
-
%CPU利用率和占用率切换: 默认%CPU显示的是利用率,如果是4核CPU,400%是最高利用率,可以按
shift i
切换为显示 cpu 占用率。参考链接 https://blog.csdn.net/u012745499/article/details/122814370
以上部分命令按两次可取消
1.3 top 命令结果说明
执行top命令后,默认会出现如下内容:
第一行:
- 当前时间
- up 89 days,1:13 : 系统运行了89天 1小时13分钟
- 3 users : 当前登录的用户数
- load average: 0.00, 0.01, 0.07: 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行:
- Tasks: 170 total : 进程总数
- 1 running : 正在运行的进程数
- 169 sleeping: 睡眠的进程数
- 0 stopped : 停止的进程数
- 0 zombie: 僵尸进程数
第三行:
- 0.2 us : 用户进程占用CPU百分比。 进程在用户地址空间中消耗CPU时间的百分比。像shell程序、各种语言的编译器、数据库应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态。
- 0.3 sy:内核进程占用CPU百分比。 进程在内核地址空间中消耗CPU时间的百分比。所有进程要使用的系统资源都是由Linux内核处理的。当处于用户态(用户地址空间)的进程需要使用系统的资源时,比如需要分配一些内存、或是执行IO操作、再或者是去创建一个子进程,此时就会进入内核态(内核地址空间)运行。事实上,决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它。
- 0.0 ni :用户进程空间内改变过优先级的进程占用CPU百分比。ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间。如果系统中没有进程被调整过nice值,那么ni就显示为0。
- 99.5 id:空闲CPU百分比
- 0.0 wa:等待输入输出的CPU时间百分比。CPU等待磁盘IO操作的时间。和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如:CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的。
- 0.0 hi :硬中断(Hardware IRQ)占用CPU的百分比
- 0.0 si : 软中断(Software Interrupts)占用CPU的百分比
这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi表示处理硬中断消耗的时间,si表示处理软中断消耗的时间。
硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。
软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗CPU时间)
- 0.0 st : 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
第四、五行:
内存显示可以用’m’命令切换单位和是否显示。
KiB Mem:物理内存总量:
- 16220656 total : 物理内存总量
- 12774136 free : 空闲的内存总量
- 2278196 used : 使用的物理内存总量
- 1168324 buff/cache : 用作内核缓存的内存量
KiB Swap: 交换区内存总量:
- 8257532 total : 交换区内存总量
- 8257532 free : 空闲的交换区总量
- 0 used : 使用的交换区总量
- 13421076 avail Mem: 缓冲的交换区总量
进程的统计信息:
title | 备注 |
---|---|
PID | 进程ID,进程的唯一标识符 |
PPID | 父进程id,图里没有体现 |
USER | 进程所有者的用户名 |
GROUP | 进程所有者的组名 |
PR | 进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。 |
NI | 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | SHR是进程使用的共享内存。共享内存大小,单位kb |
S | 进程状态(D=不可中断的睡眠状态,R=运行态,S=睡眠态,T=跟踪/停止,Z=僵尸进程) |
%CPU | 进程使用的CPU的百分比。可以按shift i 切换显示 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 |
COMMAND | 运行进程所使用的命令。可以通过小写字母c来显示完整的执行命令(效果跟top -c相同) |
https://www.runoob.com/linux/linux-comm-top.html
https://www.cnblogs.com/baichunyu/p/15356162.html
https://www.cnblogs.com/Jasper-changing/p/15559762.html