【问题标题】:Limit top command to only display top X processes on command line [closed]将 top 命令限制为仅在命令行上显示 top X 进程
【发布时间】:2015-07-02 22:52:14
【问题描述】:

我不确定为什么top 命令中没有执行此操作的选项,因为这似乎是一个自然的请求。

如果我将top 的输出通过管道传输到head,则列表不会更新,我会得到一次静态输出。然后我可以将watch 命令付诸行动,这将完成这项工作。但是,有没有更简单的解决方案?

【问题讨论】:

  • 如果我这样做top -d 5 | head -n 10,我会得到正确的输出,一次。但是如果我这样做watch -n 5 'top -d 5 | head -n 10',那么我会得到很多乱码输出。看起来 watch 没有正确处理 top 输出。有什么想法吗?

标签: linux shell command-line


【解决方案1】:

您可以为top创建配置文件(例如:在交互模式下运行top命令,然后按“n”并写入进程数限制,然后按“W”将其保存在配置文件中)。

下一步,可以批处理模式运行top;配置文件中的参数将输出限制为请求的值。所以,那么简单:

top -b > top.log

足够了。

【讨论】:

    【解决方案2】:

    也许您应该添加在批处理模式下运行top-b 参数:watch -n 5 'top -b -d 5 | head -n 10'

    【讨论】:

      【解决方案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。

      【讨论】:

      • 我喜欢这个答案 - 但遇到了一个小问题。 grep 上的行缓冲意味着如果您使用 tee for ex 来存储输出,那么它不是很理想。这有效:" top -d 5 -b | stdbuf -o0 grep --line-buffered "load average" -A15 | tee output-file" hth
      【解决方案4】:
      > top
      

      然后,按n 设置显示的最大任务数。

      操作top时,最重要的关键之一是帮助(h?)查看可用选项(n在帮助中给出)。

      更新(在评论之后):

      PERSONAL Configuration File 可能有助于批处理模式。运行top,然后使用n 设置显示的最大任务数,并使用W 交互式命令创建或更新配置文件。 top下次按照配置文件运行。

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多