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分钟前到现在的平均值。

更多uptime介绍

第二行为进程信息

含义
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:僵尸进程