目录
top命令提供了实时监控CPU相关数据的能力
一. 命令参数
top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b] [u]
d
delay 每次刷新间隔,单位是秒如:每隔两秒刷新 top -d 2
p
pid 进程ip,可以使用 ps -ef 查询相关进程信息。top -p 123
q
无延迟刷新c
显示整个命令行,而不是显示命令名C
显示CPU整体信息,仅对SMP系统有效S
指定累计模式s
使 top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险i
使 top 不显示任何闲置或者僵死进程n
iter 指定 top命令迭代输出的次数,iter为具体的迭代次数值b
"Batch"方式运行top,在这种方式下,所有来自终端的输入都将被忽略(当然除了ctrl+c),该参数可以结合参数“n"运行指定迭代次数退出或者该进程被杀死。这是运行top输出到哑终端或输到非终端的默认运行方式u
监控user用户所拥有的进程
二. 运行时命令参数
s
改变画面更新频率,需要键入刷新频率,如1sl
关闭或开启第一部分第一行 top 信息的表示t
关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示m
关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示N
以 PID 的大小的顺序排列表示进程列表(第三部分后述)P
以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)M
以内存占用率大小的顺序排列进程列表 (第三部分后述)h
显示帮助n
设置在进程列表所显示进程的数量q
退出 top
三. 输出参数
3.1 第一部分 系统信息栏
3.1.1 第一行(top)
top - 15:41:50 up 1 day, 23:08, 2 users, load average: 1.16, 1.61, 1.86
- 15:41:50 当前时间
- 23:08 系统从启动到现在的运行时间
- 2 users 登陆到系统的用户数(终端数)
- load average 当前系统负载的平均值,后面的三个值分别为16分钟前、61分钟前、86分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程 load average介绍
3.1.2 第二行(Tasks)
Tasks: 144 total, 2 running, 142 sleeping, 0 stopped, 0 zombie
- total 当前系统总进程数
- running 当前正在运行的进程数
- sleeping 当前处于等待状态的进程数
- stopped 被停止的进程数
- zombie 僵尸进程数
3.1.3 第三行(Cpus)
%Cpu(s): 0.0 us, 3.2 sy, 3.2 ni, 93.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- 分别表示了 CPU 当前的使用率
3.1.4 第四行(Mem)
KiB Mem : 7896532 total, 197976 free, 3937820 used, 3760736 buff/cache
- total 运行内存总量
- free 空闲内存量
- used 已经使用的内存量
- buff/cache 用做内核缓存的内存量
3.1.5 第五行(Swap)
KiB Swap: 0 total, 0 free, 0 used. 3700620 avail Mem
- total 交换分区内存总量
- free 交换区空闲内存量
- used 交换区已使用内存量
- avail Mem 交换区可用内存量
- 通常交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的
3.2 第二部分 进程信息
PID
进程标识符USER
进程所有者用户名PR/PRI
进程执行的优先级NI
NICE值,负值表示高优先级,正值表示低优先级VIRT
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR
共享内存大小,单位kbS/STAT
进程状态- D:不可中断的睡眠状态
- R:正在运行,或在队列中的进程
- S:处于休眠状态
- T:停止或被追踪
- Z:僵尸进程
- W:进入内存交换
- X:死掉的进程
%CPU
上次更新到现在的CPU时间占用百分比%MEN
进程使用的物理内存百分比TIME+
该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值(单位1/100s)COMMAND
进程被执行的命令名称
四. CPU文件
CPU文件:/proc/cpuinfo
- 物理CPU数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
- CPU核数
cat /proc/cpuinfo| grep "cpu cores"| uniq
- 逻辑CPU个数
cat /proc/cpuinfo| grep "processor"| wc -l
- 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
一般,逻辑CPU = 物理CPU数 * 核数,如果不等则说明CPU支持超线程技术(可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)