【命令星级】 ★★★★★
【功能说明】
top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占有状况。该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进场排序显示,同时top命令还可以通过交互式命令进行设定显示。
【语法格式】
top [option]
top [选项]
**说明:**在top命令及后面的选项里,每个元素之间都至少要有一个空格。
【选项说明】
表9-8针对该命令的参数选项进行了说明。
表9-8 top命令的参数选项及说明
交互式命令
交互式命令就是在top命令执行过程中使用的一些命令。表9-9针对交互式命令进行了说明。
表9-9 交互式命令及说明
**范例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命令的执行结果。
第二行,Tasks为任务(进程)。从上面的信息可以看出,系统先在共有95个进程,其中处于运行状态的有1个,94个在休眠(sleep),stoped状态0个,zombie状态(僵死)的有0个。
第三行,CPU状态信息。
第四行,内存状态。
第五行,swap交换分区总量。
**注意:**1)计算真正可用的内存数为:第四行的free+第四行的buff/cache+第五行的avail Mem。
2)在对内存进行监控时,我们要时刻关注top命令里第五行swap交换分区的used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。
第六行,空行。
从第七行开始,给出的是各进程(任务)的状态监控。
**范例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 敲击键盘“>”和”<"后的场景图
敲击键盘“>”和"<",可以改变排序的列,依然高亮显示,降序排列。
【命令星级】 ★★☆☆☆
【功能说明】
nice命令是一个当程序启动时,修改程序运行优先级的命令。
Linux的优先级范围是从-20(最大优先级)到19(最小优先级)。优先级越高的程序占用CPU的次数越多,反之亦然。
【语法格式】
nice [option] [command]
nice [选项] [命令语句]
**说明:**在nice命令及后面的选项和命令语句里,每个元素之间都至少要有一个空格。
【选项说明】
表9-10针对该命令的参数选项进行了说明。
表9-10 nice命令的参数选项及说明
**范例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查看进程的优先级。
在上面的输出结果中,需要重点关注一下两列。
NI是优先值,是用户层面的概念,PR是进程的实际优先级,是给内核(kernel)看(用)的。
**说明:**进程的nice值不是进程的优先级,它们不是一个概念,但是进程的nice值会影响到进程的优先级变化。
接下来通过实验来验证上面的结论。
[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)。