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 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相关推荐
- L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill
9.3 pgrep:查找匹配条件的进程 9.3.1 命令详解 [命令星级] ★★★★☆ [功能说明] pgrep命令可以查找匹配条件的进程号. [语法格式] pgrep [option ...
- L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service
9.13 runlevel:输出当前运行级别 9.13.1 命令详解 [命令星级] ★★★★★ [功能说明] runlevel命令用于输出当前Linux系统的运行级别. [语法格式] ...
- L61.linux命令每日一练 -- 第九章 Linux进程管理命令 -- renice和nohup
9.9 renice:调整运行中的进程的优先级 9.9.1 命令详解 [命令星级] ★★★☆☆ [功能说明] nice命令常用于修改未运行的程序运行时的优先级,但是对于正在运行的进程,若想 ...
- L9.linux命令每日一练 -- 第二章 文件和目录操作命令 -- ln和readlink命令
2.11.1 命令详解 [命令星级] ★★★★★ [功能说明] ln命令可用理解为英文单词link的缩写,其功能是创建文件间的链接(make links between files),链接 ...
- L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe
8.1 fdisk:磁盘分区工具 8.1.1 命令详解 [命令星级] ★★★★★ [功能说明] fdisk是Linux下常用的磁盘分区工具.受mbr分区表的限制,fdisk工具只能给小于2 ...
- L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck
8.7 resize2fs:调整ext2/ext3/ext4文件系统大小 8.7.1 命令详解 [命令星级] ★★★★☆ [功能说明] resize2fs命令用于扩容或收集未挂载的ext2 ...
- L71.linux命令每日一练 -- 第十章 Linux网络管理命令 -- wget和mailq
10.15 wget:命令行下载工具 10.15.1 命令详解 [命令星级] ★★★★☆ [功能说明] wget命令用于从网络上下载某些资料,该命令对于能够连接到互联网的Linux系统的作 ...
- L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
10.7 netstat:查看网络状态 10.7.1 命令详解 [命令星级] ★★★★★ [功能说明] netstat命令用于显示本机网络的连接状态.运行端口和路由表等信息. [语法格 ...
- L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh
10.13 nc:多功能网络工具 10.13.1 命令详解 [命令星级] ★★★★☆ [功能说明] nc是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的 ...
最新文章
- “魅力足球,艺术中国”2007中国艺术精英展
- 用Python连接MySQL并进行CRUD
- Bootstrap居中显示
- IDEA将maven项目复制成一个新的框架/项目
- 原码,补码,反码概念和计算方法详解
- Android 手机的高级终端 Termux 安装、使用
- springboot读取resources目录下文件
- Thread-Specific Storage Pattern
- English Study
- 【顺序栈】32 顺序栈ADT模板简单应用算法设计:火车调度
- Mybatis注解开发指北
- python判断某一天是一年中的第几天
- “Spark三剑客”之SparkCore和SparkSql学习笔记(零基础入门)(一)
- 老鹰酒馆 dna_酒吧和酒馆的21个最佳WordPress主题
- 千万别吃着别人,骂着别人
- IAP 程序 跳转问题
- c#.net连接access数据库
- 6044:4115:鸣人和佐助
- 苹果7处理器_苹果发布重磅创世纪新品!苹果将再次改变世界了吗?
- Oracle数据库内存体系 - PGA