【问题标题】:How to limit the number of rows in top command output on Non interactive mode for LINUX如何在 LINUX 的非交互模式下限制 top 命令输出中的行数
【发布时间】:2016-07-29 08:29:57
【问题描述】:

我们如何在非交互模式下将顶部命令输出中的行数限制为特定数字“比如 5”?

【问题讨论】:

  • 您在寻找实时结果吗?
  • 是的@sjsam。像批处理模式输出

标签: linux bash top-command


【解决方案1】:

您必须提供 -w 选项不带参数,并通过 LINES 环境变量指定所需的行数:

LINES=20 top -b -n 1 -w

请注意,输出的宽度是通过 COLUMNS 环境变量控制的。因此,如果在您的环境中设置了它,则必须将其覆盖以调用 top:

LINES=20 COLUMNS=80 top -b -n 1 -w

(unset COLUMNS; LINES=20 top -b -n 1 -w)

这适用于 Ubuntu 15.10 中包含的 top 版本。

$ top -v
  procps-ng version 3.3.9
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

显然 -w 选项并非出现在所有版本的top 中。但是你总是可以使用管道来限制输出:

top -b -n 1|head -n 20

【讨论】:

  • 在 Linux 上为我生成 t T % K K(每个在单独的行上)。
  • @Kusalananda 您是否将环境变量 COLUMNS 设置为 1?
  • env COLUMNS=80 LINES=20 top -b -n 1 -w 产生与以前相同的输出。 env LINES=20 top -b -n 1 -w 80 给了我 20 多行(所有进程)。
  • 我还建议备份LINES,因为其他进程正在使用它
  • @sjsam 这样设置,在命令之前,将为执行的进程设置它,而不是在调用 shell 中。
【解决方案2】:

对于 OS X 答案:

$ top -l 1 -n 5

但 OS X top 默认按 PID 排序,因此您可能还想添加 -o cpu

它也很少在第一次迭代时获得正确的 %cpu...我认为这可能是 top 在其他系统上的问题。

根据您想要获取的实际数据,可能会有更好的获取方法。解析交互式程序的输出是次优的。

【讨论】:

    【解决方案3】:

    我使用了一个技巧,专门用于批处理模式。我使用选项“-A”将出口管道传输到 grep,以在匹配后显示 N 行。

    在顶部的第一行有类似:“平均负载”,例如:

    $ top -d 5 -b|grep "load average" -A 15
    top - 09:42:34 up 38 min,  1 user,  load average: 0.22, 0.39, 0.53
    Tasks: 294 total,   2 running, 291 sleeping,   0 stopped,   1 zombie
    %Cpu(s):  3.5 us,  0.9 sy,  0.0 ni, 94.6 id,  0.5 wa,  0.3 hi,  0.1 si,  0.0 st
    KiB Mem :  8065144 total,  2213800 free,  2733524 used,  3117820 buff/cache
    KiB Swap: 24575996 total, 24575996 free,        0 used.  4613128 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     2744 lrojas    20   0 3376820 752000 116588 R  20.2  9.3   9:30.01 firefox
     1869 lrojas     9 -11  566164  18336  14300 S   5.2  0.2   2:35.78 pulseaudio
     2401 lrojas    20   0  740092 200456  87256 S   2.4  2.5   0:57.29 skype
     2402 lrojas    20   0  617872 172924  76172 S   2.2  2.1   0:57.17 skype
     1333 root      20   0  459028  60992  48024 S   1.6  0.8   0:36.14 Xorg
     1838 lrojas    20   0 2103336 184468  64724 S   1.4  2.3   0:56.85 gnome-shell
     2359 lrojas    20   0  741212  35068  24620 S   1.4  0.4   0:06.83 gnome-terminal-
     2404 lrojas    20   0 1867556 229912  83988 S   0.8  2.9   0:19.63 thunderbird
     1249 apache    20   0  461436  10196   3404 S   0.4  0.1   0:00.57 httpd
    

    这样它将以批处理模式继续,始终只显示前 N 行输出。

    完全标准的解决方案,适用于任何版本的 top。

    干杯,

    路易斯

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 2023-03-17
      • 2012-12-28
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多