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


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

    9.7.1 命令详解

    【命令星级】 ★★★★★

    【功能说明】

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

    【语法格式】

    top [option]
    top [选项]
    
    • 1
    • 2

    ​ **说明:**在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

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

    ​ 第一行,任务队列信息,同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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    ​ **范例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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    ​ **范例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。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103

    ​ **范例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]    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

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

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

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

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

    ​ **范例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    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ​ **范例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 [选项] [命令语句]
    
    • 1
    • 2

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

    ​ 【选项说明】

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

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

    9.8.2 使用范例

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

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

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

    [root@centos7 ~]# nice nice
    10
    
    • 1
    • 2

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

    [root@centos7 ~]# nice nice nice
    19
    
    • 1
    • 2

    ​ 其中,第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
    
    • 1
    • 2
    • 3
    • 4

    ​ 前面已经学过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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    ​ 在上面的命令中,默认情况下,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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

  • 相关阅读:
    13 Python使用Json
    【示波器专题】示波器探头不同的衰减比对测量的影响
    计算机网络协议栈:物理层 | 信道通信
    QT textedit宽度自适应内容
    macbook安装Anaconda3,TensorFlow,Keras
    Vue+SpringBoot项目分离部署踩坑记录
    酷轻松气囊按摩护膝全新上线,科技呵护膝部健康
    关于ESP32烧录的问题 - No serial data received
    终端仿真软件连接交换机调试步骤
    list去重和list倒叙
  • 原文地址:https://blog.csdn.net/qq_25599925/article/details/126202500