在Linux系统中,我们经常需要对系统资源进行监控和调整,以确保系统的正常运行和高效使用。而使用top命令是一种最常见的系统监控方法之一,但是在实际操作中,top命令的交互式界面并不方便,尤其是在系统运行负载较高的情况下,top命令的实时刷新会带来额外的系统负担。本文将介绍一种更加高效轻松的Linux批处理模式下的系统监控利器——batch mode下的top命令。
top 命令用于显示 Linux 系统中的实时处理活动,以及内核管理的任务。它将显示 CPU 和内存使用情况及其他信息,例如正在运行的程序。可以利用脚本模式的选项将top命令输出传输到其他应用程序或文件。
使用 Top 命令脚本模式的方法
在 Centos8 中,我们执行本文中的命令。下面命令按照 CPU 使用率对数据进行排序,并打印命令中指定的前 20 行。
[root@localhost ~]# top -bc -n 1 | head -20
top - 22:23:02 up 6 days, 12:36, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 186 total, 2 running, 184 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
MiB Mem : 1792.0 total, 886.5 free, 277.0 used, 628.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1333.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 176848 10824 8116 S 0.0 0.6 0:04.50 /usr/lib/systemd/s
ystemd --switch+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [kthreadd]
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [rcu_gp]
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [rcu_par_gp]
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [kworker/0:0H-kblockd]
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [mm_percpu_wq]
10 root 20 0 0 0 0 S 0.0 0.0 0:00.70 [ksoftirqd/0]
11 root 20 0 0 0 0 I 0.0 0.0 0:02.64 [rcu_sched]
12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
13 root rt 0 0 0 0 S 0.0 0.0 0:00.45 [watchdog/0]
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [cpuhp/0]
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kdevtmpfs]
17 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [netns]
如果要按照内存使用顺序排序,需要使用下面命令:
[root@localhost ~]# top -bc -o +%MEM -n 1 | head -n 20
top - 22:26:01 up 6 days, 12:39, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 187 total, 1 running, 186 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1792.0 total, 834.6 free, 329.0 used, 628.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1281.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22531 root 20 0 615344 75672 25780 S 0.0 4.1 0:00.80 node /usr/
local/bin/evilscan 192.+
968 root 20 0 413544 35488 34188 S 0.0 1.9 0:02.32 /usr/libexec/sss
d/sssd_nss --uid +
971 root 20 0 462996 34880 14700 S 0.0 1.9 0:00.65 /usr/libexec/plat
form-python -s /+
997 root 20 0 612436 28888 14600 S 0.0 1.6 0:35.22 /usr/libexec/platfo
rm-python -Es +
948 polkitd 20 0 1772752 23756 16596 S 0.0 1.3 0:00.30 /usr/lib/polkit-1/p
olkitd --no-de+
980 root 20 0 753768 18484 15908 S 0.0 1.0 0:05.09 /usr/sbin/NetworkMan
ager --no-dae+
813 root 20 0 118756 14588 13040 S 0.0 0.8 0:04.79 /usr/lib/systemd/sys
temd-journald
966 root 20 0 402088 12008 9900 S 0.0 0.7 0:01.93 /usr/libexec/sssd/ss
sd_be --domai+
950 root 20 0 395652 11736 10132 S 0.0 0.6 0:00.34 /usr/sbin/sssd -i
--logger=files
1 root 20 0 176848 10824 8116 S 0.0 0.6 0:04.50 /usr/lib/systemd/s
ystemd --switch+
6620 root 20 0 152796 10216 8992 S 0.0 0.6 0:00.01 sshd: root [priv]
840 root 20 0 115684 9876 7312 S 0.0 0.5 0:00.47 /usr/lib/systemd
/systemd-udevd
6623 root 20 0 93708 9500 8112 S 0.0 0.5 0:00.04 /usr/lib/systemd/
systemd --user
上面命令中关于top
命令使用的选项解释如下:
-
-b
: 运行脚本模式 -
-c
: 显示COMMAND列中命令的完整路径 -
-n
: 指定top在结束之前应该产生的最大迭代数。 -
-o
: 定义了按照哪个字段排序。
在批处理模式下,使用 top 命令根据进程的使用的时间排列数据。它显示进程自启动以来消耗的 CPU 时间总量。使用如下命令查看:
[root@localhost ~]# top -bc -o TIME+ -n 1 | head -n 20
top - 22:31:20 up 6 days, 12:44, 2 users, load average: 0.00, 0.04, 0.01
Tasks: 187 total, 1 running, 186 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
MiB Mem : 1792.0 total, 843.4 free, 320.1 used, 628.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1290.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
997 root 20 0 612436 28888 14600 S 0.0 1.6 0:35.24 /usr/libexec
/platform-python -Es +
946 root 20 0 160120 6460 5656 S 0.0 0.4 0:06.08 /sbin/rngd -f
980 root 20 0 753768 18484 15908 S 0.0 1.0 0:05.10 /usr/sbin/Netw
orkManager --no-dae+
813 root 20 0 118756 14588 13040 S 0.0 0.8 0:04.79 /usr/lib/systemd
/systemd-journald
1 root 20 0 176848 10824 8116 S 0.0 0.6 0:04.50 /usr/lib/systemd
/systemd --switch+
727 root 20 0 0 0 0 S 0.0 0.0 0:02.77 [xfsaild/dm-0]
11 root 20 0 0 0 0 I 0.0 0.0 0:02.65 [rcu_sched]
968 root 20 0 413544 35488 34188 S 0.0 1.9 0:02.32 /usr/libexec/sss
d/sssd_nss --uid +
966 root 20 0 402088 12008 9900 S 0.0 0.7 0:01.93 /usr/libexec/ss
sd/sssd_be --domai+
954 chrony 20 0 29444 2652 2400 S 0.0 0.1 0:01.16 /usr/sbin/chronyd
945 dbus 20 0 74704 5896 5096 S 0.0 0.3 0:01.15 /usr/bin/dbus-daemon --system --a+
24 root 39 19 0 0 0 S 0.0 0.0 0:01.13 [khugepaged]
10 root 20 0 0 0 0 S 0.0 0.0 0:00.79 [ksoftirqd/0]
下面可以将top的输出结果保存到文件中:
[root@localhost ~]# top -bc | head -30 > top-information.txt
总结
top 命令用于显示 Linux 系统中的实时处理活动,以及内核管理的任务。它将显示 CPU 和内存使用情况及其他信息,例如正在运行的程序。可以利用脚本模式的选项将top命令输出传输到其他应用程序或文件。
通过本文的介绍,我们可以看到在Linux系统中使用batch mode下的top命令可以更加高效地进行系统资源监控,并且避免了交互式界面带来的负担。我们可以通过设置top命令的-b参数来切换至batch mode模式,同时还可以通过其他参数来自定义输出结果、设置刷新间隔等。相信通过这种方式,我们可以更加轻松、高效地进行系统监控和调整,提高系统的运行效率。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !