一.top命令简介
top命令是Linux系统中常用的性能分析工具,可以实时的查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况。
二.top命令内容详解
1.第一行(任务队列信息)
top - 21:50:11 up 1 day, 23:37, 1 user, load average: 0.00, 0.01, 0.05
21:50:11 | 系统当前时间 |
up 1 day, 23:37 | 系统运行时间为1天23小时37分钟 |
1 user | 当前用户数 |
load average: 0.00, 0.01, 0.05 | CPU负载,三个数值分别是1分钟,5分钟,15分钟的cpu负载平均值 |
2.第二行(进程信息汇总)
185 total, 1 running, 184 sleeping, 0 stopped, 0 zombie
185 total | 进程总数 |
1 running | 正在运行的进程数 |
184 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
3.第三行(cpu使用率)
0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.3 us | 用户空间占用CPU百分比 |
0.0 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过的优先级的进程占用的CPU百分比 |
99.7 id | 空闲CPU百分比 |
0.0 wa | 等待输入输出吃的CPU时间百分比 |
0.0 hi | hardware IRQ,硬中断占用CPU时间百分比 |
0.0 si | software IRQ,软中断占用CPU时间百分比 |
0.0 st | steal time 丢失时间 |
4.第四、五行(显示内存占用情况)
KiB Mem : 16266508 total, 14945160 free, 854088 used, 467260 buff/cache
KiB Swap: 8257532 total, 8257532 free, 0 used. 15065044 avail Mem
16266508 total | 物理内存总量 |
14945160 free | 空闲内存总量 |
854088 used | 使用的物理内存总量 |
467260 buff/cache | 用作内核缓存的内存量 |
8257532 total | 交换区总量 |
8257532 free | 空闲的交换区总量 |
0 used | 使用的交换区总量 |
15065044 avail Mem | 缓冲的交换区总量 |
5.第六行(进程详细信息)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID | 进程ID号 |
USER | 进程所有者姓名 |
PR | 进程优先级 |
NI | nice值,负值标识高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES |
RES | 进程使用的未被换出的物理内存大小,单位kb,RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMADN | 启动进程对应的命令 |
三.常用的参数
h或者? | 显示帮助画面,使用手册 |
k | 杀掉一个进程 |
q | 退出程序 |
c | 显示命令的名称和完整命令行 |
M | 根据内存的大小及逆行排序 |
P | 根据cpu使用百分比大小进行排序 |
T | 根据时间累计进行排序 |
u | 显示相应的用户进程 |
d | 指定top刷新的时间间隔 |
p | 查看某个单独进程 |
1.top命令下输入h或者?--显示帮助画面,使用手册
2.top命令下输入q --退出程序
3.top命令下输入k --杀掉一个进程(指定进程号)
4.top命令下输入c --显示命令的完整名称喝完整命令行
5.top命令下输入M --根据内存的大小进行排序
6.top命令下输入P --根据cpu使用百分比大小进行排序
7.top命令下输入T --根据时间累计进行排序
8.top命令下输入u --显示相应用户的进程
9.top命令下输入d --指定刷新时间间隔
10.查看某个单独进程 top -p 进程id
四.VIRT、RES、SHR含义
VIRT:
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。
RES:
1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB
SHR:
1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB