top

Linux 进程工具Top解析

Posted by Sunday on 2018-06-25

TOP使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
top - 11:49:34 up 21:10,  1 user,  load average: 0.03, 0.02, 0.00
Tasks: 70 total, 2 running, 68 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1034216 total, 949148 used, 85068 free, 77876 buffers
KiB Swap: 2097148 total, 44 used, 2097104 free, 664996 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1941 mysql 20 0 749m 80m 7612 S 0.3 8.0 0:11.46 mysqld
2558 root 20 0 31796 13m 1024 R 0.3 1.3 3:44.35 sap1005
1 root 20 0 2300 716 616 S 0.0 0.1 0:01.42 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:06.07 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0
6 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.21 watchdog/0

各行解释

第一行 (Top系统状态信息)

1
2
3
4
09:14:56 : 系统当前时间
up 21:10: 系统开机到现在的运行时间
1 users : 当前1用户在线
load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息

第二行 (Tasks进程)

1
2
3
4
5
70 total:78个任务,也就是78个进程。
2 running:2个进程正在运行
68 sleeping:68个进程睡眠
0 stopped:停止的进程数
0 zombie:僵死的进程数

第三行 (Cpu统计信息)

1
2
3
4
5
6
7
8
9
Cpu(s):表示这一行显示CPU总体信息
0.3%us:用户空间占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
0.3%sy:内核空间占用CPU时间百分比
0.0%ni:改变过优先级的进程占用CPU的百分比
99.3%id:空闲CPU时间百分比
0.0%wa:等待I/O的CPU时间百分比
0.0%hi:CPU硬中断时间百分比
0.0%si:CPU软中断时间百分比
注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1

第四行 (Mem内存信息)

1
2
3
4
1034216 total:物理内存总量
949148 used:使用的物理内存量
85068 free:空闲的物理内存量
77876 buffers:用作内核缓存的物理内存量

第五行 (Swap交换空间)

1
2
3
4
2097148 total:交换区总量
44 used:使用的交换区量
2097104 free:空闲的交换区量
664996 cached:缓冲交换区总量

第七行 (进程信息)

1
2
3
4
5
6
7
8
9
10
11
12
PID:进程ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程占用的虚拟内存,单位kb。VIRT=SWAP+RES
RES:进程占用的物理内存,单位kb。RES=CODE+DATA
SHR:进程使用的共享内存
S:进程的状态。S=休眠,D=不可中断的睡眠状态 ,R=正在运行,Z=僵死状态,N=该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

其他解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列
通过 f 键可以选择显示的内容,按 空格或d 选中,按方向右键可调整位置,按q或esc退出
其他未列出的选项:
列名 含义
PPID:父进程id
RUSER:Real user name
UID:进程所有者的用户id
GROUP:进程所有者的组名
TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
P:最后使用的CPU,仅在多CPU环境下有意义
TIME:进程使用的CPU时间总计,单位秒
SWAP: 进程使用的虚拟内存中,被换出的大小,单位kb。
CODE:可执行代码占用的物理内存大小,单位kb
DATA:可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR:共享内存大小,单位kb
nFLT:页面错误次数
uDRT:最后一次写入到现在,被修改过的页面数。
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
Flags:任务标志,参考 sched.h

Top命令交互操作指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
q:退出top命令
<Space>:立即刷新
s:设置刷新时间间隔
c:显示命令完全模式
t::显示或隐藏进程和CPU状态信息
m:显示或隐藏内存状态信息
l:显示或隐藏uptime信息
f:增加或减少进程显示标志
S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
u:指定显示用户进程
r:修改进程renice值
kkill:进程
i:只显示正在运行的进程
W:保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。
h:帮助命令。
q:退出

Top 命令小技巧

1
2
3
4
5
6
7
8
9
10
11
1、输入大写P,则结果按CPU占用降序排序。
2、输入大写M,结果按内存占用降序排序。
3、按数字 1 则可以显示所有CPU核心的负载情况。
4、top -d 5 每隔 5 秒刷新一次,默认 1
5、top -p 4760,4908 监控指定进程
6、top -U johndoe ‘U’为 真实/有效/保存/文件系统用户名。
7、top -u 500 ‘u’为有效用户标识
8、top -bn 1 显示所有进程信息,top -n 1 只显示一屏信息,供管道调用
9、top -p 25097 -n 1 -b # -b 避免输出控制字符,管道调用出现乱码
10、top翻页:top -bn1 | less
11、增强版的 top:htop ,一个更加强大的交互式进程管理器