Linux命令 - top命令

Linux命令 - top命令

  Linux中 top 命令是常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

1.语法:

top [参数]

2.功能:

  显示目前正在系统中执行的程序,并通过它所提供的互动式界面,用热键加以管理,包括进程ID、内存占用率、CPU占用率等。

3.参数:
-b  使用批处理模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内。 
-c  列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。 
-d<间隔秒数>  设置top监控程序执行状况的间隔时间,单位以秒计算。 
-i  执行top指令时,忽略闲置或是已成为Zombie的程序。 
-n<执行次数>  设置监控信息的更新次数。 
-q  持续监控程序执行的状况。 
-s  使用保密模式,消除互动模式下的潜在危机。 
-S  使用累计模式,其效果类似ps指令的"-S"参数。
4.交互命令:

  在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s 选项, 其中一些命令可能会被屏蔽。

h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中 

多U多核CPU监控
&emnp;在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况,再按数字键1,就会返回到top基本视图界面。

在这里插入图片描述

高亮显示当前运行进程
&emnp;敲击键盘“b”(打开/关闭加亮效果)。

在这里插入图片描述
进程字段排序
&emnp;默认进入top时,各进程是按照CPU的占用量来排序的。敲击键盘“x”(打开/关闭排序列的加亮效果)。

在这里插入图片描述
改变排序列
&emnp;通过”shift + >”或”shift + <”可以向右或左改变排序列。如下图是按照PID来排序。

在这里插入图片描述

5.常用范例:

例一:显示进程信息

命令:top

[root@localhost ~]# top
top - 14:22:55 up 1 day, 2:57,  1 user,  load average: 0.11, 0.03, 0.01
Tasks: 255 total,   1 running, 254 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.7 us,  2.7 sy,  0.0 ni, 88.6 id,  0.0 wa,  1.0 hi,  0.0 si,  0.0 st
MiB Mem :   1790.0 total,     78.9 free,   1263.2 used,    447.9 buff/cache
MiB Swap:   2048.0 total,   1912.2 free,    135.8 used.    357.8 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                 
   2211 root      20   0 3007976 258844  83436 S   9.3  14.1   0:36.72 gnome-shell                                             
   2892 root      20   0  618208  60908  46060 S   1.3   3.3   0:04.52 gnome-terminal-                                         
     11 root      20   0       0      0      0 I   0.3   0.0   0:00.20 rcu_sched                                               
      1 root      20   0  245616  10192   7728 S   0.0   0.6   0:02.59 systemd                                                 
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd                                                
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                  
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                              
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd                                    
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                            
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.17 ksoftirqd/0                                             
     12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0                                             
     13 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdog/0                                              
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0                                                 
     16 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs                                               
     17 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                                                   
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd                                                 
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.01 khungtaskd                                              
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper                                              
     21 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback                                               
     22 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kcompactd0                                              
     23 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd                                                    
     24 root      39  19       0      0      0 S   0.0   0.0   0:00.56 khugepaged                                              
     25 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 crypto                                                  
     26 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd                                             
     27 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd                                                 
     28 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio                                          
     29 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 tpm_dev_wq                                              

  前五行是当前系统情况整体的统计信息区,每一行信息的具体意义如下:

第一行,任务队列信息,同 uptime 命令的执行结果

top - 14:22:55 up 1 day, 2:57, 1 user, load average: 0.11, 0.03, 0.01

内容说明
14:22:55当前系统时间
up 1 day, 2:57系统的运行时间,本机已经运行1天2小时57分钟(在这期间系统没有重启过)
1 user当前登录了一个用户
load average: 0.11, 0.03, 0.01系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行,任务进程信息

Tasks: 255 total, 1 running, 254 sleeping, 0 stopped, 0 zombie

  系统现在共有255个进程,其中处于运行中的有1个,254个在休眠(sleep),正在停止的有0个,zombie状态(僵尸)的有0个。

内容说明
255 total系统中的进程总数
1 running正在运行的进程数
254 sleeping睡眠的进程
0 stopped正在停止的进程
0 zombie僵尸进程。如果不是0,需要手工检查僵尸进程

第三行,cpu状态信息

%Cpu(s): 7.7 us, 2.7 sy, 0.0 ni, 88.6 id, 0.0 wa, 1.0 hi, 0.0 si, 0.0 st

  在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识。

内容说明
7.7 us用户模式占用的CPU百分比
2.7 sy系统模式占用的CPU百分比
0.0 ni改变过优先级的用户进程占用的CPU百分比
88.6 id空闲CPU的CPU百分比
0.0 wa等待输入/输出(I/O)的进程的占用CPU百分比
1.0 hi硬中断请求服务占用的CPU百分比
0.0 si软中断请求服务占用的CPU百分比
0.0 st虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比

第四行,内存状态

MiB Mem : 1790.0 total, 78.9 free, 1263.2 used, 447.9 buff/cache

  第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
  如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的avail Mem ,按这个公式此台服务器的可用内存:78.9k +447.9k +357.8k = 884.6k左右。
  对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

内容说明
1790.0 total物理内存的总量,单位KB
78.9 free空闲的物理内存数量
1263.2 used已经使用的物理内存数量
447.9 buff/cache作为缓冲的内存数量

第五行,交换分区信息

MiB Swap: 2048.0 total, 1912.2 free, 135.8 used. 357.8 avail Mem

内容说明
2048.0 total交换分区(虚拟内存)的总大小
1912.2 free空闲交换分区的大小
135.8 used已经使用的交互分区的大小
357.8 avail Mem作为缓存的交互分区的大小

第六行,空行

第七行以下:各进程(任务)的状态监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2211 root 20 0 3007976 258844 83436 S 9.3 14.1 0:36.72 gnome-shell

内容说明
PID 进程id
USER进程所有者
PR进程优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND进程名称(命令名/命令行)

例二:显示完整命令

命令:top -c

[root@localhost ~]# top -c

top - 15:34:28 up  4:09,  1 user,  load average: 0.00, 0.02, 0.00
Tasks: 255 total,   1 running, 254 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  2.7 sy,  0.0 ni, 94.6 id,  0.0 wa,  0.7 hi,  0.0 si,  0.0 st
MiB Mem :   1790.0 total,     89.4 free,   1265.8 used,    434.8 buff/cache
MiB Swap:   2048.0 total,   1901.5 free,    146.5 used.    354.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                      
   2211 root      20   0 3017560 265244  81412 S   4.7  14.5   0:49.24 /usr/bin/gnome-shell                         
   5872 root      20   0  605964  54156  39720 S   1.0   3.0   0:00.32 /usr/libexec/gnome-terminal-server           
   4539 root      20   0       0      0      0 I   0.3   0.0   0:00.10 [kworker/u256:0-events_unbound]              
   4708 root      20   0  205416  31688   9860 S   0.3   1.7   0:05.40 /usr/libexec/sssd/sssd_kcm --uid 0 --gid 0 + 
   5905 root      20   0   65752   5072   4188 R   0.3   0.3   0:00.02 top -c                                       
      1 root      20   0  245616  10192   7728 S   0.0   0.6   0:02.67 /usr/lib/systemd/systemd --switched-root --+ 
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 [kthreadd]                                   
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_gp]                                     
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_par_gp]                                 
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [kworker/0:0H-kblockd]                       
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [mm_percpu_wq]                               
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.27 [ksoftirqd/0]                                
     11 root      20   0       0      0      0 I   0.0   0.0   0:00.25 [rcu_sched]                                     

例三:以批处理模式显示程序信息

命令:top -b

例四:以累积模式显示程序信息

命令:top -S

例五:设置信息更新次数

命令:top -n 2

  表示更新两次后终止更新显示。

例六:设置信息更新次数

命令:top -d 3

  表示更新周期为3秒。

例七:显示指定的进程信息

命令:top -p 2211

  显示进程号为2211的进程信息,CPU、内存占用率等。

[root@localhost ~]# top -p 2211

top - 15:40:36 up  4:15,  1 user,  load average: 0.08, 0.02, 0.01
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.1 us,  3.1 sy,  0.0 ni, 90.8 id,  0.0 wa,  0.7 hi,  0.3 si,  0.0 st
MiB Mem :   1790.0 total,     88.3 free,   1266.6 used,    435.1 buff/cache
MiB Swap:   2048.0 total,   1901.5 free,    146.5 used.    354.5 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                        
   2211 root      20   0 3017084 264476  81000 S   8.0  14.4   0:53.92 gnome-shell   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值