linux动态监控系统top命令详解

文章发布于 2023-08-06

top命令使用方法

linux top命令实时动态显示计算机的性能。类似于windows系统的任务管理器。

top [options]

options 参数说明
-d 每个几秒更新,默认3秒
-i 不显示任何闲置或僵死进程
-p 通过进程ID监控某个进程的活动

top命令顶部5行信息说明

下面是top命令的输出结果,下面会详细讲解top命令里面的信息参数。

[root@localhost ~]# top
top - 17:48:06 up  1:54,  2 users,  load average: 0.00, 0.01, 0.04
Tasks: 121 total,   2 running, 119 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995672 total,   671232 free,   194532 used,   129908 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   660880 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                               
   698 root      20   0  273164   4876   3728 S  0.3  0.5   0:10.22 vmtoolsd                                                              
  2021 root      20   0  162108   2244   1548 R  0.3  0.2   0:00.06 top                                                                   
     1 root      20   0  128176   6812   4180 S  0.0  0.7   0:01.40 systemd                                                               
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd  
第一行 综合
top - 17:48:06 up  1:54,  2 users,  load average: 0.00, 0.01, 0.04

- top - 17:48:06 当前时间
- up  1:54  系统已运行了多久
- 2 users  当前登录用户数
- load average: 0.00, 0.01, 0.04  负载均衡 ,任务队列的平均长度,1分钟、5分钟、15分钟前到现在的平均数
第二行 进程
Tasks: 121 total,   2 running, 119 sleeping,   0 stopped,   0 zombie

- Tasks: 121 total 进程总数  
- 2 running 2个正在运行的进程数
- 119 sleeping 睡眠的进程数
- 0 stopped 停止的进程数
-  0 zombie 僵死的进程数,进程已死,但是内存未释放
第三行 %Cpu(s) 使用
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

- %Cpu(s):  0.0 us 用户占用cpu的百分比
- 0.3 sy 系统占用cpu百分比
- 0.0 ni 用户进程占用cpu百分比
- 99.7 id 空闲cpu百分比
- 0.0 wa 等待输入输出的cpu占用百分比
- 0.0 hi 硬中断占用百分比
- 0.0 si 软中断占用百分比
- 0.0 st 虚拟机占用cpu的百分比
第四行 内存
KiB Mem :   995672 total,   671232 free,   194532 used,   129908 buff/cache
- 第KiB Mem 行 : 占用内存的统计
- 995672 total 物理内存总量
- 671232 free 空闲的物理内存大小
- 194532 used 已使用的物理内存大小
- 129908 buff/cache 系统缓存的总量
第五行 内存
KiB Swap:  2097148 total,  2097148 free,        0 used.   660880 avail Mem 
- 第KiB Swap行:分区内存的统计
- 2097148 total  总量
- 2097148 free  空闲
- 0 used 已使用的交换区大小
- 660880 avail Mem 缓存总量

全部进程列字段说明

进程的所有统计字段信息说明,默认情况下是显示比较重要的PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND。

序号  列名    含义
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

设置进程字段显示列

进入设置页面

先执行top命令,然后输入f,就进入到进程信息列设置页面,如下:

Fields Management for window 1:Def, whose current sort field is %CPU
   Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
   'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!

* PID     = Process Id             TGID    = Thread Group Id     
* USER    = Effective User Name    ENVIRON = Environment vars    
* PR      = Priority               vMj     = Major Faults delta  
* NI      = Nice Value             vMn     = Minor Faults delta  
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB) 
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode 
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode 
* S       = Process Status         nsNET   = NET namespace Inode 
* %CPU    = CPU Usage              nsPID   = PID namespace Inode 
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode 
* COMMAND = Command Name/Line   
  PPID    = Parent Process pid  
  UID     = Effective User Id   
  RUID    = Real User Id        
  RUSER   = Real User Name      
  SUID    = Saved User Id       
  SUSER   = Saved User Name     
  GID     = Group Id            
  GROUP   = Group Name          
  PGRP    = Process Group Id    
  TTY     = Controlling Tty     
  TPGID   = Tty Process Grp Id  
  SID     = Session Id          
  nTH     = Number of Threads   
  P       = Last Used Cpu (SMP) 
  TIME    = CPU Time            
  SWAP    = Swapped Size (KiB)  
  CODE    = Code Size (KiB)     
  DATA    = Data+Stack (KiB)    
  nMaj    = Major Page Faults   
  nMin    = Minor Page Faults   
  nDRT    = Dirty Pages Count   
  WCHAN   = Sleeping in Function
  Flags   = Task Flags <sched.h>
  CGROUPS = Control Groups      
  SUPGIDS = Supp Groups IDs     
  SUPGRPS = Supp Groups Names   

注意:*号代表显示的列,按上下方向键,可以定位字段。

设置显示列

在需要显示的列上按d键,出现* 则代表会显示该列。

设置排序列

在需要排序的列上按s键,Fields Management for window 1:Def, whose current sort field is %CPU 第一行的末尾出现该字段,则代表以该字段排序

退出

按q键退出

交互模式

  • P 以cpu使用率排序
  • M 以内存的使用率排序
  • N 以PID排序
  • 1 查看所有cpu的使用情况
  • u 查看指定用户的进程,操作方法是按下u,输入用户名,回车即可
  • E 切换top计量单位,默认是kb
  • x 粗体显示排序列
  • f 进入进程字段设置页面,上面有设置方法
  • c 显示完整的进程名称(COMMAND)
  • h top命令帮助文档
  • q 退出