top命令

top命令

top命令是动态查看进程变化,监控linux的系统状况;它是常用的性能分析工具,能够实时显示系统资源各个进程占用状况,类是windows的任务管理器。

1.1 语法

[root@localhost ~]# top -h
  procps-ng version 3.3.10
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
  • -h | -v: 显示帮助或者版本信息】
  • -c: 命令行列显示程序名以及参数
  • -d: 启动时设置刷新时间间隔
  • -H: 设置线程模式
  • -i: 只显示活跃进程
  • -n: 显示指定数量的进程
  • -p: 显示指定PID的进程
  • -u: 显示指定用户的进程

1.2 视图参数含义

top - 20:43:38 up 244 days, 22:07,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.4 us,  2.4 sy,  0.0 ni, 95.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882232 total,    97472 free,   106028 used,  1678732 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1588260 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
12109 root      10 -10  131544  16988  10560 S  4.3  0.9 871:43.79 AliYunDun
12075 root      10 -10   42448   4636   3136 S  0.3  0.2  15:13.47 AliYunDunUpdate
    1 root      20   0  190980   3548   2180 S  0.0  0.2  43:41.23 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.46 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   1:16.02 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    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  31:55.98 rcu_sched
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S  0.0  0.0   1:14.59 watchdog/0
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   15 root      20   0       0      0      0 S  0.0  0.0   0:04.21 khungtaskd
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd
   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset

从上面的结果可以看出,top视图分为两部分:操作系统资源概况信息和进程信息。首先是分析资源概况中各个参数含义,再来分析进程信息中各个参数含义。

我们先利用top命令进入视图,再f键看下全称信息,再q退出回到top视图。

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

1.2.1. 资源概况

a、操作系统时间、登录用户、负载情况

top - 20:43:38 up 244 days, 22:07,  1 user,  load average: 0.00, 0.01, 0.05
  • 20:43:38 当前系统时间。
  • up 244 days, 22:07 操作系统从开机后运行的时间,运行天时分。
  • users:当前系统三个用户登录在线。
  • load average:1,5,15min的系统平均负载。

b、运行任务概况 - tasks

Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
  • total:系统当前运行进程数。
  • running:当前运行的进程数。
  • sleeping:睡眠中的进程数。

c、CPU概览: %Cpu(s) 表示CPU使用百分比,按照时间占用计算,单位s

%Cpu(s):  0.0 us,  0.8 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:用户空间占用cpu时间百分比,如果是多核,这个数值表示占用的平均百分比,可以按1进行多核统计和平均统计切换。
  • sy:内核空间占用cpu时间百分比,后续同上。
  • ni:用户空间改变过优先级的进程占用cpu时间百分比。
  • id:空闲时间占用cpu的百分比。
  • wa:等待输入输出占用cpu时间百分比。
  • hi:硬中断占用cpu时间百分比。
  • si:软中断占用cpu时间百分比。

时间占用百分比=该种类型操作消耗cpu时间/top刷新间隔时间。top每3s刷新一次,用户空间进程在这3秒内试用了cpu时间1.5s,那么us为50%=1.5s/3s。

d、内存概览(KB)

KiB Mem : 32781220 total,  9375268 free, 10749464 used, 12656488 buff/cache
  • total:内存总量。
  • free:内存剩余总量。
  • used:内存使用数量。
  • buff/cached:用于缓冲的内存数量。

e、缓存区概况(KB)

KiB Swap:        0 total,        0 free,        0 used. 21365776 avail Mem
  • total:交换区总量。
  • free:空闲交换区数量。
  • used:使用交换区数量。

1.2.2 进程概况

进程概况的统计是从多个维度进行展示的,其中几个计较重要的参数如下:

  • PID:进程ID,唯一标识。
  • USER:进程所属用户。
  • %CPU:自上一次top刷新该进程的cpu占用时间百分比。
  • %MEM:进程消耗内存百分比。
  • TIME+:自进程开始以来,消耗CPU时间,单位1/100s。

其它参数可以在上面f键视图的全称中了解。

1.3 top视图中交互命令

1.3.1 全局

  • Enter/Space:刷新视图。
  • h:帮助信息,查询各个交互命令的含义。
  • O:是否展示进程区域中的0值,比如%CPU是0的将全部隐藏。
  • A:在全屏模式和多窗口选择模式中切换。
  • d:设置刷新时间间隔。
  • E:切换内存和交换区单位。
  • H:开启/关闭线程模式,以线程的方式展示。
  • k:杀掉指定进程或线程。
  • Z:改变颜色配置。
  • q:退出。

1.3.2 概要区域

  • 1:显示CPU平均状态/分开显示各个逻辑CPU状态。
  • m:切换显示内存统计的数据。

1.3.3 进程区域

  • x:切换高亮行的排序位置。
  • z:切换颜色。
  • b:块状标记高亮行。
  • c:切换显示命令/程序名和参数。
  • f:显示field管理。
  • u:按照执行用户显示进程。
  • i:显示所有进程或活跃的进程。
  • n:设置显示的进程数。

1.4 top常用场景

top -H -p pid # 显示某个进程所有活跃的线程消耗情况。

对输出结果进行排序

top输出的下半部分有很多进程信息列,我们可以根据这些列对进程输出进行排序,默认情况下根据cpu使用率对进程排序。在top命令执行时,按”O”,可以看到排序项以及相应的按键:

Current Sort Field:  K  for window 1:Def
Select sort field via field letter, type any other key to return
  a: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  ……

各项默认以从大到小排序,top运行中,**按”R”**可反向显示输出结果。

显示特定用户相关进程

在top运行时,**按”u”**快捷键,可以过滤出特定用户拉起的进程:

Which user (blank for all): sshusr
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15561 sshusr    20   0  3700  356  276 R  8.3  0.0   5:26.05 a.out
15492 sshusr    20   0 81932 1868 1088 S  0.0  0.0   0:00.00 sash
15493 sshusr    20   0 13840 2872 1580 S  0.0  0.0   0:00.04 bash

执行top命令时,使用**”top -u sshusr”**可以起到相同效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Erice_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值