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 avPID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+291 root       0 -20       0      0      0 S  0.3  0.0   0:00.07830 root      20   0  231552   6464   5100 S  0.3  0.6   0:10.691313 root      20   0  574304  17492   6164 S  0.3  1.8   0:01.571 root      20   0  128300   6960   4192 S  0.0  0.7   0:05.532 root      20   0       0      0      0 S  0.0  0.0   0:00.004 root       0 -20       0      0      0 S  0.0  0.0   0:00.006 root      20   0       0      0      0 S  0.0  0.0   0:00.677 root      rt   0       0      0      0 S  0.0  0.0   0:00.008 root      20   0       0      0      0 S  0.0  0.0   0:00.009 root      20   0       0      0      0 S  0.0  0.0   0:02.0810 root       0 -20       0      0      0 S  0.0  0.0   0:00.0011 root      rt   0       0      0      0 S  0.0  0.0   0:00.3813 root      20   0       0      0      0 S  0.0  0.0   0:00.0014 root       0 -20       0      0      0 S  0.0  0.0   0:00.0015 root      20   0       0      0      0 S  0.0  0.0   0:00.0016 root       0 -20       0      0      0 S  0.0  0.0   0:00.0017 root       0 -20       0      0      0 S  0.0  0.0   0:00.0018 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 cachedPID 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+ COMMAND1 root      20   0  128300   6960   4192 S  0.0  0.7   0:07.09 systemd2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H6 root      20   0       0      0      0 S  0.0  0.0   0:00.76 ksoftirqd/07 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/08 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh9 root      20   0       0      0      0 S  0.0  0.0   0:02.28 rcu_sched10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain11 root      rt   0       0      0      0 S  0.0  0.0   0:00.66 watchdog/013 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset21 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd22 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 md23 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 edac-poller24 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 watchdogd30 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kswapd031 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd32 root      39  19       0      0      0 S  0.0  0.0   0:00.24 khugepaged33 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 crypto41 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kthrotld43 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kmpath_rdacd44 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kaluad45 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kpsmoused47 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ipv6_addrconf60 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 deferwq97 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kauditd223 root      20   0       0      0      0 S  0.0  0.0   0:02.19 kworker/u256:2235 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 nfit236 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ata_sff237 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 mpt_poll_0238 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 mpt/0243 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_0244 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_0246 root      20   0       0      0      0 S  0.0  0.0   0:00.01 scsi_eh_1247 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_1248 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_2249 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_2254 root     -51   0       0      0      0 S  0.0  0.0   0:00.47 irq/16-vmwgfx255 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ttm_swap280 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset281 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfsalloc282 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs_mru_cache283 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-buf/sda3284 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-data/sda3285 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-conv/sda3286 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-cil/sda3287 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-reclaim/sda288 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-log/sda3289 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-eofblocks/s290 root      20   0       0      0      0 S  0.0  0.0   0:04.38 xfsaild/sda3291 root       0 -20       0      0      0 S  0.0  0.0   0:00.09 kworker/0:1H369 root      20   0   37112   2996   2684 S  0.0  0.3   0:00.48 systemd-journal399 root      20   0   48812   5788   2860 S  0.0  0.6   0:00.56 systemd-udevd529 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-buf/sda1530 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-data/sda1531 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-conv/sda1532 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-cil/sda1533 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-reclaim/sda534 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-log/sda1535 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 xfs-eofblocks/s536 root      20   0       0      0      0 S  0.0  0.0   0:00.00 xfsaild/sda1743 root      16  -4   55532    848    448 S  0.0  0.1   0:00.07 auditd817 polkitd   20   0  613016  11964   4940 S  0.0  1.2   0:00.18 polkitd819 dbus      20   0   66472   2580   1880 S  0.0  0.3   0:00.47 dbus-daemon825 root      20   0   26384   1808   1484 S  0.0  0.2   0:00.22 systemd-logind829 root      20   0   99688   6192   4576 S  0.0  0.6   0:00.05 VGAuthService830 root      20   0  231552   6464   5100 S  0.0  0.6   0:18.10 vmtoolsd832 root      20   0  228144   5596   3864 S  0.0  0.6   0:00.04 abrtd833 root      20   0  225856   4812   3332 S  0.0  0.5   0:00.08 abrt-watch-log854 root      20   0  358852  29524   7072 S  0.0  3.0   0:01.37 firewalld877 root      20   0   96580   2472   1800 S  0.0  0.2   0:00.58 login982 root      20   0  474212   8588   6652 S  0.0  0.9   0:00.66 NetworkManager1311 root      20   0  112924   4308   3280 S  0.0  0.4   0:00.03 sshd1313 root      20   0  574304  17492   6164 S  0.0  1.8   0:02.47 tuned1314 root      20   0  216584   4116   3292 S  0.0  0.4   0:01.80 rsyslogd1475 root      20   0   89704   2132   1124 S  0.0  0.2   0:00.09 master1481 postfix   20   0   89876   4084   3080 S  0.0  0.4   0:00.02 qmgr1806 mysql     20   0  113412   1596   1304 S  0.0  0.2   0:00.04 mysqld_safe1968 mysql     20   0  968916  85500   7188 S  0.0  8.6   0:08.47 mysqld2140 root      20   0  158928   5612   4268 S  0.0  0.6   0:02.07 sshd2146 root      20   0  116600   3264   1808 S  0.0  0.3   0:00.28 bash3903 root      20   0       0      0      0 S  0.0  0.0   0:00.25 kworker/u256:14494 root      20   0  126388   1668   1028 S  0.0  0.2   0:00.94 crond4578 root      20   0  116468   3036   1668 S  0.0  0.3   0:00.13 bash5518 postfix   20   0   89808   4064   3064 S  0.0  0.4   0:00.04 pickup7057 root      20   0       0      0      0 S  0.0  0.0   0:00.91 kworker/0:17665 root      20   0       0      0      0 S  0.0  0.0   0:00.02 kworker/0:27936 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:07944 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)。

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

  1. L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill

    9.3 pgrep:查找匹配条件的进程 9.3.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ pgrep命令可以查找匹配条件的进程号. ​ [语法格式] pgrep [option ...

  2. L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service

    9.13 runlevel:输出当前运行级别 9.13.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ runlevel命令用于输出当前Linux系统的运行级别. ​ [语法格式] ...

  3. L61.linux命令每日一练 -- 第九章 Linux进程管理命令 -- renice和nohup

    9.9 renice:调整运行中的进程的优先级 9.9.1 命令详解 ​ [命令星级] ★★★☆☆ ​ [功能说明] ​ nice命令常用于修改未运行的程序运行时的优先级,但是对于正在运行的进程,若想 ...

  4. L9.linux命令每日一练 -- 第二章 文件和目录操作命令 -- ln和readlink命令

    2.11.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ ln命令可用理解为英文单词link的缩写,其功能是创建文件间的链接(make links between files),链接 ...

  5. L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe

    8.1 fdisk:磁盘分区工具 8.1.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ fdisk是Linux下常用的磁盘分区工具.受mbr分区表的限制,fdisk工具只能给小于2 ...

  6. L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck

    8.7 resize2fs:调整ext2/ext3/ext4文件系统大小 8.7.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ resize2fs命令用于扩容或收集未挂载的ext2 ...

  7. L71.linux命令每日一练 -- 第十章 Linux网络管理命令 -- wget和mailq

    10.15 wget:命令行下载工具 10.15.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ wget命令用于从网络上下载某些资料,该命令对于能够连接到互联网的Linux系统的作 ...

  8. L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss

    10.7 netstat:查看网络状态 10.7.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ netstat命令用于显示本机网络的连接状态.运行端口和路由表等信息. ​ [语法格 ...

  9. L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh

    10.13 nc:多功能网络工具 10.13.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ nc是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的 ...

最新文章

  1. “魅力足球,艺术中国”2007中国艺术精英展
  2. 用Python连接MySQL并进行CRUD
  3. Bootstrap居中显示
  4. IDEA将maven项目复制成一个新的框架/项目
  5. 原码,补码,反码概念和计算方法详解
  6. Android 手机的高级终端 Termux 安装、使用
  7. springboot读取resources目录下文件
  8. Thread-Specific Storage Pattern
  9. English Study
  10. 【顺序栈】32 顺序栈ADT模板简单应用算法设计:火车调度
  11. Mybatis注解开发指北
  12. python判断某一天是一年中的第几天
  13. “Spark三剑客”之SparkCore和SparkSql学习笔记(零基础入门)(一)
  14. 老鹰酒馆 dna_酒吧和酒馆的21个最佳WordPress主题
  15. 千万别吃着别人,骂着别人
  16. IAP 程序 跳转问题
  17. c#.net连接access数据库
  18. 6044:4115:鸣人和佐助
  19. 苹果7处理器_苹果发布重磅创世纪新品!苹果将再次改变世界了吗?
  20. Oracle数据库内存体系 - PGA

热门文章

  1. 寻求公正是一种心理病
  2. 前端知识——js部分
  3. epic无法安装怎么办?
  4. 未来50亿年科学预测
  5. Kali的ZMap安装经验总结
  6. java 从xml读变量_java – 如何从XML属性文件加载变量?
  7. H323Client-1 H323协议族概述
  8. 【BAT-表姐御用04ren进阶命令】文件数字顺序命名及改名(含命令解释)
  9. 树莓派3 搭建NAS
  10. Linux/Unix初步学习001(Linux镜像文件下载、Unix在线学习网址)