Linux 的 top命令详解
这张图是真实的阿里云云服务器上,使用了top命令之后的信息。
1.上半部分显示了整体系统负载情况
1.1 top 第一行:
从左到右依次为当前系统时间,系统运行的时间,系统在之前1min、5min和15min内cpu的平均负载值
比如我这张图中
- 15:35:44 ====> 当前系统时间是 15:35:44
- 126 days, 14:29 ====> 系统运行时间为145天10小时45分钟(在此期间没有重启过)
- 1 user ===> 当前有1个用户登录系统
- load average: 2.56, 2.47, 3.26 ===> 系统在之前1min、5min、15min之内CPU的平均负载值为2.56 2.47 3.26
1.2 Tasks一行:
该行给出进程整体的统计信息,包括统计周期内进程总数、运行状态进程数、休眠状态进程数、停止状态进程数和僵尸状态进程数
比如我这张图中
- 统计周期内进程总数 ====> 98
- 运行状态进程数 ====> 5
- 休眠状态进程数 ====> 92
- 停止状态进程数 ====> 0
- 僵尸状态进程数 ====> 1
这里顺带普及一下杀掉僵尸进程 可以参考我的这篇文章:
1.3 Cpu(s)一行:
cpu整体统计信息,包括用户态下进程、系统态下进程占用cpu时间比,nice值大于0的进程在用户态下占用cpu时间比,cpu处于idle状态、wait状态的时间比,以及处理硬中断、软中断的时间比
比如我这张图中
- 76.9%us, 23.1%sy, 这个为用户空间和内核空间所占cpu百分比
- 用户态下进程占用cpu时间比 ====> 76.9%
- 内核态下进程占用cpu时间比 ====> 23.1%
- 0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
- 0.0 id 空闲CPU百分比
- 0.0 wa 等待输入输出的CPU时间百分比
- 0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
- 0.0 si 软中断(Software Interrupts)占用CPU的百分比
1.4 Mem一行:
该行提供了内存统计信息,包括物理内存总量、已用内存、空闲内存以及用作缓冲区的内存量
比如我第一张图中 1881952 total, 72736 free, 13127996 used, 496420 buffer/cache
- 1881952 total 物理内存总量
- 72736 free 空间内存总量
- 13127996 used 已用内存总量
- 496420 buffer/cache 用作缓冲区的内存量
1.5 Swap一行
虚存统计信息,包括交换空间总量、已用交换区大小、空闲交换区大小以及用作缓存的交换空间大小
Swap: 0 total, 0 free, 0 used, 405996 avail Mem
这行为交换分区使用情况,和上面内存的解释基本一致
- 0 total, 交换分区物理内存总量
- 0 free, 交换分区空间内存总量
- 0 used, 交换分区已用内存总量
- 405996 avail Mem 交换分区用作缓冲区的内存量
2. 下半部分表头
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID 进程号
- USER 用户名
- PR 优先级(priority )
- NI nice值。负值表示高优先级,正值表示低优先级m
- VIRT 进程使用的虚拟内存总量
- RES 进程使用的、未被换出的物理内存大小,单位kb
- SHR 共享内存大小,单位kb
- S 进程状态。
- D=不可中断的睡眠状态
- R=运行
- S=睡眠
- T=跟踪/停止
- Z=僵尸进程
- %CPU CPU使用率
- %MEM 进程使用的物理内存百分比
- TIME+ 进程使用的CPU时间总计,单位1/100秒
- COMMAND 执行的命令
top常用总结:
- top 默认每隔5秒显式所有进程的资源占用情况
- top -d 10 每隔10秒显式所有进程的资源占用情况
- top -c 每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
- top -p 2088 -p 3088 每隔5秒显示pid是2088和pid是3088的两个进程的资源占用情况
- top -d 2 -c -p 3008 每隔2秒显示pid是3008的进程的资源使用情况,并显式该进程启动的命令行参数