在 Linux 中以脚本模式运行 Top

系统 Linux
top 命令用于显示 Linux 系统中的实时处理活动,以及内核管理的任务。它将显示 CPU 和内存使用情况及其他信息,例如正在运行的程序。可以利用脚本模式的选项将top命令输出传输到其他应用程序或文件。

top 命令用于显示 Linux 系统中的实时处理活动,以及内核管理的任务。

它将显示 CPU 和内存使用情况及其他信息,例如正在运行的程序。可以利用脚本模式的选项将top命令输出传输到其他应用程序或文件。

使用 Top 命令脚本模式的方法

在 Centos8 中,我们执行本文中的命令。下面命令按照 CPU 使用率对数据进行排序,并打印命令中指定的前 20 行。

  1. [root@localhost ~]# top -bc -n 1 | head -20 
  2. top - 22:23:02 up 6 days, 12:36,  2 users,  load average: 0.00, 0.00, 0.00 
  3. Tasks: 186 total,   2 running, 184 sleeping,   0 stopped,   0 zombie 
  4. %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 
  5. MiB Mem :   1792.0 total,    886.5 free,    277.0 used,    628.4 buff/cache 
  6. MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1333.1 avail Mem  
  7.  
  8.     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
  9.       1 root      20   0  176848  10824   8116 S   0.0   0.6   0:04.50 /usr/lib/systemd/systemd --switch+ 
  10.       2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 [kthreadd] 
  11.       3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_gp] 
  12.       4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_par_gp] 
  13.       6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [kworker/0:0H-kblockd] 
  14.       9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [mm_percpu_wq] 
  15.      10 root      20   0       0      0      0 S   0.0   0.0   0:00.70 [ksoftirqd/0] 
  16.      11 root      20   0       0      0      0 I   0.0   0.0   0:02.64 [rcu_sched] 
  17.      12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 [migration/0] 
  18.      13 root      rt   0       0      0      0 S   0.0   0.0   0:00.45 [watchdog/0] 
  19.      14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 [cpuhp/0] 
  20.      16 root      20   0       0      0      0 S   0.0   0.0   0:00.00 [kdevtmpfs] 
  21.      17 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [netns] 

如果要按照内存使用顺序排序,需要使用下面命令:

  1. [root@localhost ~]# top -bc -o +%MEM -n 1 | head -n 20 
  2. top - 22:26:01 up 6 days, 12:39,  2 users,  load average: 0.00, 0.00, 0.00 
  3. Tasks: 187 total,   1 running, 186 sleeping,   0 stopped,   0 zombie 
  4. %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 
  5. MiB Mem :   1792.0 total,    834.6 free,    329.0 used,    628.4 buff/cache 
  6. MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1281.2 avail Mem  
  7.  
  8.     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
  9.   22531 root      20   0  615344  75672  25780 S   0.0   4.1   0:00.80 node /usr/local/bin/evilscan 192.+ 
  10.     968 root      20   0  413544  35488  34188 S   0.0   1.9   0:02.32 /usr/libexec/sssd/sssd_nss --uid + 
  11.     971 root      20   0  462996  34880  14700 S   0.0   1.9   0:00.65 /usr/libexec/platform-python -s /+ 
  12.     997 root      20   0  612436  28888  14600 S   0.0   1.6   0:35.22 /usr/libexec/platform-python -Es + 
  13.     948 polkitd   20   0 1772752  23756  16596 S   0.0   1.3   0:00.30 /usr/lib/polkit-1/polkitd --no-de+ 
  14.     980 root      20   0  753768  18484  15908 S   0.0   1.0   0:05.09 /usr/sbin/NetworkManager --no-dae+ 
  15.     813 root      20   0  118756  14588  13040 S   0.0   0.8   0:04.79 /usr/lib/systemd/systemd-journald 
  16.     966 root      20   0  402088  12008   9900 S   0.0   0.7   0:01.93 /usr/libexec/sssd/sssd_be --domai+ 
  17.     950 root      20   0  395652  11736  10132 S   0.0   0.6   0:00.34 /usr/sbin/sssd -i --logger=files 
  18.       1 root      20   0  176848  10824   8116 S   0.0   0.6   0:04.50 /usr/lib/systemd/systemd --switch+ 
  19.    6620 root      20   0  152796  10216   8992 S   0.0   0.6   0:00.01 sshd: root [priv] 
  20.     840 root      20   0  115684   9876   7312 S   0.0   0.5   0:00.47 /usr/lib/systemd/systemd-udevd 
  21.    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 时间总量。使用如下命令查看:

  1. [root@localhost ~]# top -bc -o TIME+ -n 1 | head -n 20 
  2. top - 22:31:20 up 6 days, 12:44,  2 users,  load average: 0.00, 0.04, 0.01 
  3. Tasks: 187 total,   1 running, 186 sleeping,   0 stopped,   0 zombie 
  4. %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 
  5. MiB Mem :   1792.0 total,    843.4 free,    320.1 used,    628.4 buff/cache 
  6. MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1290.0 avail Mem  
  7.  
  8.     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
  9.     997 root      20   0  612436  28888  14600 S   0.0   1.6   0:35.24 /usr/libexec/platform-python -Es + 
  10.     946 root      20   0  160120   6460   5656 S   0.0   0.4   0:06.08 /sbin/rngd -f 
  11.     980 root      20   0  753768  18484  15908 S   0.0   1.0   0:05.10 /usr/sbin/NetworkManager --no-dae+ 
  12.     813 root      20   0  118756  14588  13040 S   0.0   0.8   0:04.79 /usr/lib/systemd/systemd-journald 
  13.       1 root      20   0  176848  10824   8116 S   0.0   0.6   0:04.50 /usr/lib/systemd/systemd --switch+ 
  14.     727 root      20   0       0      0      0 S   0.0   0.0   0:02.77 [xfsaild/dm-0] 
  15.      11 root      20   0       0      0      0 I   0.0   0.0   0:02.65 [rcu_sched] 
  16.     968 root      20   0  413544  35488  34188 S   0.0   1.9   0:02.32 /usr/libexec/sssd/sssd_nss --uid + 
  17.     966 root      20   0  402088  12008   9900 S   0.0   0.7   0:01.93 /usr/libexec/sssd/sssd_be --domai+ 
  18.     954 chrony    20   0   29444   2652   2400 S   0.0   0.1   0:01.16 /usr/sbin/chronyd 
  19.     945 dbus      20   0   74704   5896   5096 S   0.0   0.3   0:01.15 /usr/bin/dbus-daemon --system --a+ 
  20.      24 root      39  19       0      0      0 S   0.0   0.0   0:01.13 [khugepaged] 
  21.      10 root      20   0       0      0      0 S   0.0   0.0   0:00.79 [ksoftirqd/0] 

下面可以将top的输出结果保存到文件中:

  1. [root@localhost ~]# top -bc | head -30 > top-information.txt 

本文转载自微信公众号「Linux就该这么学」,可以通过以下二维码关注。转载本文请联系Linux就该这么学公众号。

 

责任编辑:武晓燕 来源: Linux就该这么学
相关推荐

2019-10-23 11:56:47

top命令Linux

2020-04-17 08:00:22

Docker命令普通用户

2017-11-01 13:42:13

LinuxDOSFreeDOS

2016-12-16 09:23:29

LinuxShell脚本

2017-04-24 18:50:15

AnboxLinuxAndroid

2024-10-17 10:03:21

2021-07-19 09:37:59

Windows 操作系统Linux

2023-10-09 08:59:12

X11转发Linux

2018-08-21 09:00:30

Linuxtop命令

2021-02-15 17:29:46

LinuxShell脚本

2019-06-14 11:15:27

WindowsLinuxWSL

2009-06-10 16:58:42

GlassFishOSGi模式

2021-02-16 12:50:13

服务器Linux浏览器

2019-06-04 11:17:39

Windows Linux命令

2015-09-15 13:12:35

脚本UbuntuLinux内核

2017-09-19 15:40:23

Linuxsudo命令密码

2019-03-22 09:20:45

Linux命令sudo

2021-05-10 11:25:24

Linux命令磁盘

2014-08-13 14:48:01

LinuxShell脚本

2018-11-13 09:00:50

LinuxMS-DOS游戏DOSBox
点赞
收藏

51CTO技术栈公众号