top 命令详解
top - 17:09:16 up 16:57, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 193 total, 1 running, 192 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16330068k total, 541336k used, 15788732k free, 102260k buffers
Swap: 4194300k total, 0k used, 4194300k free, 184000k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19232 1504 1212 S 0.0 0.0 0:00.90 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
第一行 top - 17:09:16 up 16:57, 1 user, load average: 0.00, 0.00, 0.00
17:09:16 当前时间
up 16:57 系统已运行的时间
1 user 当前登录用户的数量
load average: 0.00, 0.00, 0.00 相应最近1、5和15分钟内的平均负载。
按 "字母l" 键,可以显示和隐藏 负载 第一行
注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。
如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
(逻辑CPU:物理CPU个数×每颗核数就应该等于逻辑CPU的个数; top查看的CPU也是逻辑CPU个数 )
第二行 Tasks: 193 total, 1 running, 192 sleeping, 0 stopped, 0 zombie
193 total 全部的进程数
1 running 运行、
192 sleeping 睡眠、
0 stopped 停止、
0 zombie 僵尸进程的数量(僵尸是一种进程的状态)
按 "字母t" 键,可以显示和隐藏 第二 三行
第三行 Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
0.0%us 用户空间占用CPU的百分比。
0.0%sy 内核空间占用CPU的百分比。
0.0%ni 改变过优先级的进程占用CPU的百分比
99.9%id 空闲CPU百分比
0.0%wa IO等待占用CPU的百分比
0.0%hi 硬中断(Hardware IRQ)占用CPU的百分比
0.0%si 软中断(Software Interrupts)占用CPU的百分比
0.0%st 虚拟机被hypervisor偷去的CPU时间
(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
注意:何为内核空间,何为用户空间?
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间
第四行 Mem: 16330068k total, 541336k used, 15788732k free, 102260k buffers
物理内存显示如下: 全部可用内存、 已使用内存、 空闲内存、 缓冲内存
第五行 Swap: 4194300k total, 0k used, 4194300k free, 184000k cached
交换部分显示的是: 全部、 已使用、 空闲和 缓冲交换空间
按 "字母m" 键,可以显示和隐藏 第四 五行
第六行 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID 进程ID,进程的唯一标识符
USER 进程所有者的实际用户名。
PR 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态
NI 进程的nice值(优先级)。越小的值意味着越高的优先级
VIRT 进程使用的虚拟内存 单位kb。VIRT=SWAP+RES
RES 进程占用的物理内存 驻留内存大小。驻留内存是任务使用的非交换物理内存大小
SHR 进程使用的共享内存
S 进程的状态 D - 不可中断的睡眠态 R – 运行态 S – 睡眠态 T – 被跟踪或已停止 Z – 僵尸态
%CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM 进程使用的可用物理内存百分比
TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
COMMAND 运行进程所使用的命令
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
扩展
通过 f 键可以选择显示的内容。
按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。
按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
不理解做一下测试
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
其它命令
h或者? 显示帮助画面
q 退出程序
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
要手动刷新,用户可以输入回车或者空格
按下大写'Z' 向用户显示一个改变top命令的输出颜色的屏幕
小写 z’: 切换彩色显示
常用操作
top //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
参考链接:
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html
https://linux.cn/article-2352-1.html