Linux命令:top
环境
- CentOS Linux release 7.3.1611 (Core)
功能
Linux下常用的性能分析工具,主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常。
- 命令格式
top
- 参数说明
-b: 批处理模式。通常用在脚本中,不断输出信息
-c: 显示包含路径的命令行,而不只是程序名称
-d: 指定信息刷新的时间间隔(默认是5s)
-i: 不显示闲置或者僵死进程
-n: 指定显示的次数。一般与-b搭配使用
-p: 指定进程号。可以指定多个pid
-s: 使top命令在安全模式中运行
-S: 指定累积模式,每个进程的CPU时间为该进程及关闭的子进程锁累加的时间
-u: 指定用户名
- 交互命令
c: 显示完整的命令
d: 更改刷新频率
f: 增加或减少要显示的列(选中的会变成大写并加*号)
F: 选择排序的列
h: 显示帮助画面
H: 显示线程
i: 忽略闲置和僵死进程
k: 通过给予一个PID和一个signal来终止一个进程。(默认signal为15。在安全模式中此命令被屏蔽)
l: 显示平均负载以及启动时间(即显示影藏第一行)
m: 显示内存信息
M: 根据内存资源使用大小进行排序
N: 按PID由高到低排列
o: 改变列显示的顺序
O: 选择排序的列,与F完全相同
P: 根据CPU资源使用大小进行排序
q: 退出top命令
r: 修改进程的nice值(优先级)。优先级默认为10,正值使优先级降低,反之则提高的优先级
s: 设置刷新频率(默认单位为秒,如有小数则换算成ms)。默认值是5s,输入0值则系统将不断刷新
S: 累计模式(把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+ )
T: 根据进程使用CPU的累积时间排序
t: 显示进程和CPU状态信息(即显示影藏CPU行)
u: 指定用户进程
W: 将当前设置写入~/.toprc文件,下次启动自动调用toprc文件的设置
<: 向前翻页
>: 向后翻页
?: 显示帮助画面
1(数字1): 显示每个CPU的详细情况
输出结果
$ top
top - 22:46:56 up 3 days, 13:22, 3 users, load average: 0.00, 0.02, 0.05
Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016164 total, 388300 free, 58204 used, 569660 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 799148 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
813 root 20 0 31636 3100 2484 S 0.3 0.3 1:17.38 AliYunDunUpdate
1 root 20 0 43172 3400 2284 S 0.0 0.3 0:02.58 systemd
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:01.07 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:07.95 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:01.48 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.06 khungtaskd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
26 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
27 root 39 19 0 0 0 S 0.0 0.0 0:00.83 khugepaged
28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
38 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
39 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
40 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ipv6_addrconf
59 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 deferwq
103 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kauditd
229 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
234 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
235 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_0
236 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
237 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_1
第一行信息
第一行是任务队列信息,同 uptime 命令的执行结果
值 | 含义 |
---|---|
22:46:56 | 系统当前时间 |
3 days, 13:22 | 系统运行时间 |
2 users | 当前登录用户数 |
load average: 0.00, 0.02, 0.05 | 系统平均负载,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
第二行为进程信息
值 | 含义 |
---|---|
Tasks: 65 total | 进程总数 |
1 running | 正在运行的进程数 |
28 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
僵尸进程
一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
第三行CPU的信息
值 | 含义 |
---|---|
0.3 us | 用户空间占用CPU百分比 |
0.0 sy | 内核空间占用CPU百分比 |
0.0% ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
99.7% id | 空闲CPU百分比 |
0.0% wa | 等待输入输出的CPU时间百分比 |
0.0% hi | 处理硬件中断的CPU时间百分比 |
0.0% si | 处理软件中断的CPU时间百分比 |
0.0% st | 这个虚拟机被虚拟化软件(KVM)偷去的CPU时间百分比 |
说明
- st:如果当前处于一个KVM下的vm,实际上KVM也是要消耗一部分CPU处理时间的
第四、五为内存信息
第一行是物理内存使用,第二行是虚拟内存使用(交换空间),和free命令相似。
- 物理内存
值 | 含义 |
---|---|
1016164 total | 物理内存总量,当前为1016164KB |
388300 free | 物理内存空闲量,当前为388300KB |
58204 used | 物理内存已经使用量,当前为58204KB |
569660 buff/cache | 用于缓冲和缓存的内存空间 |
- 虚拟内存
值 | 含义 |
---|---|
0 total | 虚拟内存总量,当前为0KB |
0 free | 虚拟内存空闲量,当前为0KB |
0 used | 虚拟内存已经使用量,当前为0KB |
799148 avail Mem | 可用内存空间,当前799148KB |
进程信息
以下为所有进程信息,包括不默认显示的
列名 | 含义 |
---|---|
PID | 进程id |
PPID | 父进程id |
USER | 进程所有者的用户名 |
RUSER | Real user name |
UID | 进程所有者的用户id |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名 |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
TIME | 进程使用的CPU时间总计,单位秒 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
%MEM | 进程使用的物理内存百分比 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 SWAP = VIRT - RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA(应用程序真的使用的内存) |
CODE | 可执行代码占用的物理内存大小,单位kb |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
nFLT | 进程启动以来页面错误的次数(这个值过高意味着进程从磁盘读取大量资源) |
nDRT | 最后一次写入到现在被修改过的页面数。(通常小于10或者为0) |
S | 进程状态 |
COMMAND | 命令名/命令行 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
说明
进程状态
- D:不可中断的睡眠状态
- R:运行
- S:睡眠
- T:跟踪/停止
- Z:僵尸进程