L60.linux命令每日一练 -- 第九章 Linux进程管理命令 -- top和nice

9.7 top:实时显示系统中各个进程的资源占有状况

9.7.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占有状况。该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进场排序显示,同时top命令还可以通过交互式命令进行设定显示。

【语法格式】

top [option]
top [选项]

​ **说明:**在top命令及后面的选项里,每个元素之间都至少要有一个空格。

​ 【选项说明】

​ 表9-8针对该命令的参数选项进行了说明。

​ 表9-8 top命令的参数选项及说明

在这里插入图片描述
交互式命令

​ 交互式命令就是在top命令执行过程中使用的一些命令。表9-9针对交互式命令进行了说明。

​ 表9-9 交互式命令及说明

在这里插入图片描述
在这里插入图片描述

9.7.2 使用范例

​ **范例9-20:**显示进程信息。

[root@centos7 ~]# top	#使用top命令通常不接任何参数,若需要其他更强大的功能则需要配合交互命令。
top - 18:00:39 up  1:45,  2 users,  load average: 0.00, 0.03, 0.05
Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombi
%Cpu(s):  0.0 us,  0.7 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0
KiB Mem :   995684 total,   184808 free,   287224 used,   523652 bu
KiB Swap:  2097148 total,  2097148 free,        0 used.   540896 av

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+
   291 root       0 -20       0      0      0 S  0.3  0.0   0:00.07
   830 root      20   0  231552   6464   5100 S  0.3  0.6   0:10.69
  1313 root      20   0  574304  17492   6164 S  0.3  1.8   0:01.57
     1 root      20   0  128300   6960   4192 S  0.0  0.7   0:05.53
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00
     4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.67
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00
     9 root      20   0       0      0      0 S  0.0  0.0   0:02.08
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00
    11 root      rt   0       0      0      0 S  0.0  0.0   0:00.38
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00
    15 root      20   0       0      0      0 S  0.0  0.0   0:00.00
    16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00
    17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00
    18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00

​ 下面针对命令各行的内容进行说明。

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

  • 18:00:39 当前系统时间。
  • up 1:45, 系统已经运行了1小时45分。
  • 2 users 当前有2个用户登录系统。
  • load average: 0.00, 0.03, 0.05 load average后面的三个数分别是1分钟、5分钟、15分钟的平均负载情况。

​ 第二行,Tasks为任务(进程)。从上面的信息可以看出,系统先在共有95个进程,其中处于运行状态的有1个,94个在休眠(sleep),stoped状态0个,zombie状态(僵死)的有0个。

​ 第三行,CPU状态信息。

  • 0.0 us 用户空间占用CPU的百分比。
  • 0.0 ni 内核空间占用CPU的百分比。
  • 0.0 hi 改变过优先级的进程占用CPU的百分比。
  • 100.0%id 空闲CPU百分比。
  • 0.0%wa I/O等待占用CPU的百分比。
  • 0.0%hi 硬中断(Hardware IRQ)占用CPU的百分比。
  • 0.0%si 软中断(Software Interrupts)占用CPU的百分比。
  • 0.0%st 虚拟机占用CPU的百分比。

​ 第四行,内存状态。

  • 995684 total 物理内存总量。
  • 184808 free 空闲内存总量。
  • 287224 used 使用中的内存总量。
  • 523652 buff/cache 缓冲的内存量。

​ 第五行,swap交换分区总量。

  • 2097148 total 交换区总量。
  • 2097148 free 空闲交换区总量。
  • 0 used 使用的交换区总量。
  • 540896 avail Mem 缓存的内存量。

​ **注意:**1)计算真正可用的内存数为:第四行的free+第四行的buff/cache+第五行的avail Mem。

​ 2)在对内存进行监控时,我们要时刻关注top命令里第五行swap交换分区的used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。

​ 第六行,空行。

​ 从第七行开始,给出的是各进程(任务)的状态监控。

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

​ **范例9-21:**显示多核不同核CPU的信息。

​ 在top基本视图中(如图9-2所示),按键盘数字“1”,可监控每个逻辑CPU的状况。

在这里插入图片描述
​ 图9-2 物理服务器查看每个CPU的使用率

​ 观察图9-2可以发现,服务器有8个逻辑CPU,实际上是2个物理CPU。再按数字键1,就会返回到top基本视图界面。

​ 下面使用虚拟机的系统验证:

[root@centos7 ~]# top
top - 18:34:34 up  2:19,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  95 total,   1 running,  94 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		#top基本视图界面显示为CPU(s)。
KiB Mem :   995684 total,   184420 free,   287596 used,   523668 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   540524 avail Mem 

#虚拟机一个CPU也能看到,只是不明显。
[root@centos7 ~]# top
top - 18:36:12 up  2:21,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st		#按下数字键1,显示为Cpu0。
KiB Mem :   995684 total,   184668 free,   287348 used,   523668 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   540772 avail Mem 

​ **范例9-22:**将进程按照使用内存排序。

[root@centos6 ~]# top -a	#使用参数-a将进程按照使用内存排序,CentOS 7不支持此参数。 
top - 02:41:05 up  5:07,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1002988k total,   424980k used,   578008k free,    19716k buffers
Swap:  2097148k total,        0k used,  2097148k free,   283532k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                   
  2528 mysql     20   0  358m  26m 4852 S  0.0  2.7   0:02.93 mysqld                                                                                     
  1705 root      20   0  102m 4656 3588 S  0.0  0.5   0:00.82 sshd                                                                                       
  1358 haldaemo  20   0 38340 4580 3596 S  0.0  0.5   0:00.46 hald                                                                                       
  1573 root      20   0 81036 3476 2568 S  0.0  0.3   0:00.12 master                                                                                     
  1586 postfix   20   0 81284 3472 2592 S  0.0  0.3   0:00.06 qmgr                                                                                       
  2816 postfix   20   0 81116 3420 2548 S  0.0  0.3   0:00.00 pickup                                                                                     
  1314 root      20   0  184m 3388 2512 S  0.0  0.3   0:00.24 cupsd                                                                                      
  1587 root      20   0  178m 2532 1552 S  0.0  0.3   0:00.16 abrtd                                                                                      
  1429 root      20   0  390m 2316 1684 S  0.0  0.2   0:00.44 automount                                                                                  
  1707 root      20   0  105m 1812 1424 S  0.0  0.2   0:00.83 bash                                                                                       
  1185 root      20   0  249m 1720 1124 S  0.0  0.2   0:00.12 rsyslogd                                                                                   
     1 root      20   0 19344 1556 1236 S  0.0  0.2   0:02.52 init                                                                                       
  2426 root      20   0  105m 1460 1228 S  0.0  0.1   0:00.02 mysqld_safe                                                                                
  1646 root      20   0 64500 1428  724 S  0.0  0.1   0:00.03 certmonger                                                                                 
  1259 rpcuser   20   0 23352 1384  924 S  0.0  0.1   0:00.02 rpc.statd                                                                                  
  1614 root      20   0  114m 1272  664 S  0.0  0.1   0:00.05 crond                                                                                      
  1494 root      20   0 66288 1256  528 S  0.0  0.1   0:00.00 sshd                                                                                       
  1359 root      20   0 20396 1180  976 S  0.0  0.1   0:00.06 hald-runner                                                                                
  1391 root      20   0 22516 1104  940 S  0.0  0.1   0:00.00 hald-addon-inpu                                                                            
  2833 root      20   0 15024 1096  836 R  0.0  0.1   0:00.04 top                                                                                        
  1405 haldaemo  20   0 18004 1044  896 S  0.0  0.1   0:00.00 hald-addon-acpi                                                                            
   508 root      16  -4 10912 1016  348 S  0.0  0.1   0:00.11 udevd                                                                                      
  1676 root      18  -2 10908  976  312 S  0.0  0.1   0:00.00 udevd                                                                                      
  1677 root      18  -2 10908  976  312 S  0.0  0.1   0:00.00 udevd                                                                                      
  1293 dbus      20   0 21432  924  644 S  0.0  0.1   0:00.00 dbus-daemon                                                                                
  1236 rpc       20   0 18980  892  644 S  0.0  0.1   0:00.16 rpcbind                                                                                    
  1151 root      16  -4 29764  872  632 S  0.0  0.1   0:00.02 auditd                                                                                     
  1346 root      20   0  4076  660  544 S  0.0  0.1   0:00.03 acpid                                                                                      
  1663 root      20   0  4060  544  468 S  0.0  0.1   0:00.00 mingetty                                                                                   
  1671 root      20   0  4060  544  468 S  0.0  0.1   0:00.00 mingetty                                                                                   
  1669 root      20   0  4060  540  468 S  0.0  0.1   0:00.00 mingetty 

​ **范例9-23:**以批处理模式显示进程信息。

[root@centos7 ~]# top -b	#使用参数-b可以看到命令执行结果不停地向下刷新。
top - 18:43:55 up  2:29,  2 users,  load average: 0.01, 0.03, 0.05
Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995684 total,   182528 free,   287140 used,   526016 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   540948 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  128300   6960   4192 S  0.0  0.7   0:07.09 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
     4 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.76 ksoftirqd/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:02.28 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   0:00.66 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:00.00 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
    21 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd
    22 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 md
    23 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 edac-poller
    24 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 watchdogd
    30 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kswapd0
    31 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd
    32 root      39  19       0      0      0 S  0.0  0.0   0:00.24 khugepaged
    33 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 crypto
    41 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kthrotld
    43 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kmpath_rdacd
    44 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kaluad
    45 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kpsmoused
    47 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ipv6_addrconf
    60 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 deferwq
    97 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kauditd
   223 root      20   0       0      0      0 S  0.0  0.0   0:02.19 kworker/u256:2
   235 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 nfit
   236 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ata_sff
   237 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 mpt_poll_0
   238 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 mpt/0
   243 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_0
   244 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_0
   246 root      20   0       0      0      0 S  0.0  0.0   0:00.01 scsi_eh_1
   247 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_1
   248 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_2
   249 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_2
   254 root     -51   0       0      0      0 S  0.0  0.0   0:00.47 irq/16-vmwgfx
   255 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ttm_swap
   280 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   281 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfsalloc
   282 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs_mru_cache
   283 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-buf/sda3
   284 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-data/sda3
   285 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-conv/sda3
   286 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-cil/sda3
   287 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-reclaim/sda
   288 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-log/sda3
   289 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-eofblocks/s
   290 root      20   0       0      0      0 S  0.0  0.0   0:04.38 xfsaild/sda3
   291 root       0 -20       0      0      0 S  0.0  0.0   0:00.09 kworker/0:1H
   369 root      20   0   37112   2996   2684 S  0.0  0.3   0:00.48 systemd-journal
   399 root      20   0   48812   5788   2860 S  0.0  0.6   0:00.56 systemd-udevd
   529 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-buf/sda1
   530 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-data/sda1
   531 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-conv/sda1
   532 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-cil/sda1
   533 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-reclaim/sda
   534 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-log/sda1
   535 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-eofblocks/s
   536 root      20   0       0      0      0 S  0.0  0.0   0:00.00 xfsaild/sda1
   743 root      16  -4   55532    848    448 S  0.0  0.1   0:00.07 auditd
   817 polkitd   20   0  613016  11964   4940 S  0.0  1.2   0:00.18 polkitd
   819 dbus      20   0   66472   2580   1880 S  0.0  0.3   0:00.47 dbus-daemon
   825 root      20   0   26384   1808   1484 S  0.0  0.2   0:00.22 systemd-logind
   829 root      20   0   99688   6192   4576 S  0.0  0.6   0:00.05 VGAuthService
   830 root      20   0  231552   6464   5100 S  0.0  0.6   0:18.10 vmtoolsd
   832 root      20   0  228144   5596   3864 S  0.0  0.6   0:00.04 abrtd
   833 root      20   0  225856   4812   3332 S  0.0  0.5   0:00.08 abrt-watch-log
   854 root      20   0  358852  29524   7072 S  0.0  3.0   0:01.37 firewalld
   877 root      20   0   96580   2472   1800 S  0.0  0.2   0:00.58 login
   982 root      20   0  474212   8588   6652 S  0.0  0.9   0:00.66 NetworkManager
  1311 root      20   0  112924   4308   3280 S  0.0  0.4   0:00.03 sshd
  1313 root      20   0  574304  17492   6164 S  0.0  1.8   0:02.47 tuned
  1314 root      20   0  216584   4116   3292 S  0.0  0.4   0:01.80 rsyslogd
  1475 root      20   0   89704   2132   1124 S  0.0  0.2   0:00.09 master
  1481 postfix   20   0   89876   4084   3080 S  0.0  0.4   0:00.02 qmgr
  1806 mysql     20   0  113412   1596   1304 S  0.0  0.2   0:00.04 mysqld_safe
  1968 mysql     20   0  968916  85500   7188 S  0.0  8.6   0:08.47 mysqld
  2140 root      20   0  158928   5612   4268 S  0.0  0.6   0:02.07 sshd
  2146 root      20   0  116600   3264   1808 S  0.0  0.3   0:00.28 bash
  3903 root      20   0       0      0      0 S  0.0  0.0   0:00.25 kworker/u256:1
  4494 root      20   0  126388   1668   1028 S  0.0  0.2   0:00.94 crond
  4578 root      20   0  116468   3036   1668 S  0.0  0.3   0:00.13 bash
  5518 postfix   20   0   89808   4064   3064 S  0.0  0.4   0:00.04 pickup
  7057 root      20   0       0      0      0 S  0.0  0.0   0:00.91 kworker/0:1
  7665 root      20   0       0      0      0 S  0.0  0.0   0:00.02 kworker/0:2
  7936 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0
  7944 root      20   0  161992   2068   1512 R  0.0  0.2   0:00.00 top^C	#退出使用快捷键Ctrl+c。

​ **范例9-24:**显示进程的完整路径。

[root@centos7 ~]# top -c		#使用参数-c显示进程的整个命令路径,而不是只显示命令名称。
top - 18:46:15 up  2:31,  2 users,  load average: 0.00, 0.02, 0.05
Tasks:  96 total,   1 running,  95 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.2 us,  0.0 sy,  0.0 ni, 93.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995684 total,   182448 free,   287220 used,   526016 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   540868 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                             
  8095 root      20   0  162156   2236   1608 R  6.7  0.2   0:00.02 top -c                                                                              
     1 root      20   0  128300   6960   4192 S  0.0  0.7   0:07.22 /usr/lib/systemd/systemd --switched-root --system --deserialize 22                  
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 [kthreadd]                                                                          
     4 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.76 [ksoftirqd/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:02.29 [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   0:00.66 [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:00.00 [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]                                                                            
    21 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kblockd]                                                                           
    22 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [md]                                                                                
    23 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [edac-poller]                                                                       
    24 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [watchdogd]                                                                         
    30 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kswapd0]                                                                           
    31 root      25   5       0      0      0 S  0.0  0.0   0:00.00 [ksmd]                                                                              
    32 root      39  19       0      0      0 S  0.0  0.0   0:00.25 [khugepaged]                                                                        
    33 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [crypto]                                                                            
    41 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kthrotld]                                                                          
    43 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kmpath_rdacd]                                                                      
    44 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kaluad]                                                                            
    45 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kpsmoused]                                                                         
    47 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [ipv6_addrconf]    

​ **范例9-25:**设置执行top命令后的信息刷新时间。

[root@centos7 ~]# top -d 3		#使用参数-d指定更新周期为3秒,也就是说命令结果每隔3秒刷新一次。

​ **范例9-26:**设置执行top命令后的信息刷新次数。

[root@centos7 ~]# top -n 2		#使用参数-n指定更新次数为2此,也就是说命令结果刷新两次后终止退出,-n参数可以和-d参数配合使用。

​ **范例9-27:**显示指定的进程信息。

[root@centos7 ~]# ps -ef |grep crond
root       4494      1  0 17:35 ?        00:00:00 /usr/sbin/crond -n
root       8367   2146  0 18:51 pts/0    00:00:00 grep --color=auto crond
[root@centos7 ~]# top -p 2146	#使用-p选项接上指定的进程号,就可以只显示这个进程的信息了。
top - 18:52:01 up  2:37,  2 users,  load average: 0.02, 0.02, 0.05
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 98.3 id,  1.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995684 total,   182448 free,   287212 used,   526024 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   540876 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                             
  2146 root      20   0  116600   3264   1808 S  0.0  0.3   0:00.65 bash    

​ **范例9-28:**字段排序(交互模式)例子。

​ 默认进入top命令时,各进程是按照CPU的使用量来排序的。

​ 场景1:敲击键盘“b”和"x",得到图9-3。

在这里插入图片描述
​ 图9-3 敲击键盘“b”和"x"后的场景图

​ 读者可以反复敲击,即可看出不同的显示。

​ 场景2:敲击键盘“z”和"x",得到图9-4。
在这里插入图片描述
​ 图9-4 敲击键盘“z”和"x"的场景图

​ 敲击z后,可以看到大部分内容都变成了红色,再敲x,对列高亮显示。

​ 场景3:敲击键盘“>”和"<“可以向右或向左改变排序列,如图9-5所示。
在这里插入图片描述
​ 图9-5 敲击键盘“>”和”<"后的场景图

​ 敲击键盘“>”和"<",可以改变排序的列,依然高亮显示,降序排列。

9.8 nice:调整程序运行时的优先级

9.8.1 命令详解

【命令星级】 ★★☆☆☆

【功能说明】

​ nice命令是一个当程序启动时,修改程序运行优先级的命令。

​ Linux的优先级范围是从-20(最大优先级)到19(最小优先级)。优先级越高的程序占用CPU的次数越多,反之亦然。

【语法格式】

nice [option] [command]
nice [选项] [命令语句]

​ **说明:**在nice命令及后面的选项和命令语句里,每个元素之间都至少要有一个空格。

​ 【选项说明】

​ 表9-10针对该命令的参数选项进行了说明。

​ 表9-10 nice命令的参数选项及说明
在这里插入图片描述

9.8.2 使用范例

​ **范例9-29:**单独使用nice命令。

[root@centos7 ~]# nice	#命令不接任何内容时,显示出当前系统默认的程序运行优先级为0。
0

​ **范例9-30:**默认增加优先级10。

[root@centos7 ~]# nice nice
10

​ 其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,最后第2个nice命令显示当前程序运行的优先级为10。

[root@centos7 ~]# nice nice nice
19

​ 其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,随后第2个nice命令又以默认值10来调整第3个nice命令的优先级,即在第2个nice命令运行优先级的基础上再增加10,得到新的程序运行优先级20,但20大于最小程序运行优先级19,所以最终是以优先级19来运行第3个nice命令,最后第3个nice命令显示当前程序运行的优先级为19。

​ **范例9-31:**查看进程优先级。

[root@centos7 ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   2146   2140  0  80   0 - 29150 do_wai pts/0    00:00:00 bash
0 R     0   9874   2146  0  80   0 - 38337 -      pts/0    00:00:00 ps

​ 前面已经学过ps命令了,这里使用ps -l查看进程的优先级。

​ 在上面的输出结果中,需要重点关注一下两列。

  • PRI:代表这个进程的优先级,通俗点说就是进程被CPU执行的先后顺序,此值越小进程的优先级别就越高,就能越早执行。
  • NI:代表这个进场的nice值,表示进程可被执行的优先级的修正数值,在加入nice值后,将会使得PRI变为:PRI(new)=80(PRI初始默认值)+nice。这样一来,如果nice值为负值,那么该进程的优先级值将变小,即其优先级会变高,也表示其越快被执行。

​ NI是优先值,是用户层面的概念,PR是进程的实际优先级,是给内核(kernel)看(用)的。

​ **说明:**进程的nice值不是进程的优先级,它们不是一个概念,但是进程的nice值会影响到进程的优先级变化。

9.8.3 实验:测试PRI和NI的关系

​ 接下来通过实验来验证上面的结论。

[root@centos7 ~]# vim test1 &		#通过这个后台任务创建一个进程。
[1] 10283
[root@centos7 ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   2146   2140  0  80   0 - 29150 do_wai pts/0    00:00:00 bash
0 T     0  10283   2146  0  80   0 - 36798 do_sig pts/0    00:00:00 vim
0 R     0  10289   2146  0  80   0 - 38337 -      pts/0    00:00:00 ps

[1]+  Stopped                 vim test1

​ 在上面的命令中,默认情况下,NI的值都为0,PRI的值都为80。

​ 现在使用nice命令调整一下进程的优先级。

[root@centos7 ~]# nice -n -10 vim test2 &	#使用nice调整为-10。
[2] 10375
[root@centos7 ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   2146   2140  0  80   0 - 29150 do_wai pts/0    00:00:00 bash
0 T     0  10283   2146  0  80   0 - 36798 do_sig pts/0    00:00:00 vim
4 T     0  10375   2146  1  70 -10 - 36798 do_sig pts/0    00:00:00 vim
0 R     0  10379   2146  0  80   0 - 38337 -      pts/0    00:00:00 ps

[2]+  Stopped                 nice -n -10 vim test2

​ 经过nice命令调整,可以发现NI列变为-10,而PRI列变化为70=80+(-10)。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/126202500
今日推荐