限制top命令仅在命令行上显示前X个进程

mal*_*ing 8 linux shell command-line

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

如果我输出topto 的输出head,那么列表不会更新,我得到静态输出一次.然后我可以将watch命令付诸行动,这将完成这项工作.但是,有一个更简单的解决方案吗?

Lui*_*jas 11

我使用技巧,特别是批处理模式.我使用选项"-A"将出口连接到grep,以在匹配后显示N行.

正如在顶部的第一行中,有一些类似于:"load average",我grep,例如:

$ 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
Run Code Online (Sandbox Code Playgroud)

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

完全标准的解决方案,适用于任何顶级版本.

  • 我喜欢这个答案 - 但遇到了一个小问题。grep 上的行缓冲意味着如果您使用 tee for ex 来存储输出,那么它就不太理想了。这有效:" top -d 5 -b | stdbuf -o0 grep --line-buffered "load average" -A15 | tee output-file" hth (2认同)
  • 我相信使用“^top - ”代替“平均负载”更通用。如果我们使用“-c”选项显示完整的命令,则会有一个带有“平均负载”参数的“grep”进程,因此下面的行也将被“grep”删除。这是出乎意料的。 (2认同)

Alp*_*per 8

> top
Run Code Online (Sandbox Code Playgroud)

然后,按n以设置显示的最大任务.

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

更新(评论后):

PERSONAL Configuration File可能有助于批处理模式.运行top然后设置显示的最大任务,n并使用Winteractive命令创建或更新配置文件.top将在下次根据配置文件运行.


小智 7

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