【发布时间】:2016-07-29 08:29:57
【问题描述】:
我们如何在非交互模式下将顶部命令输出中的行数限制为特定数字“比如 5”?
【问题讨论】:
-
您在寻找实时结果吗?
-
是的@sjsam。像批处理模式输出
标签: linux bash top-command
我们如何在非交互模式下将顶部命令输出中的行数限制为特定数字“比如 5”?
【问题讨论】:
标签: linux bash top-command
您必须提供 -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
【讨论】:
t T % K K(每个在单独的行上)。
env COLUMNS=80 LINES=20 top -b -n 1 -w 产生与以前相同的输出。 env LINES=20 top -b -n 1 -w 80 给了我 20 多行(所有进程)。
LINES,因为其他进程正在使用它
对于 OS X 答案:
$ top -l 1 -n 5
但 OS X top 默认按 PID 排序,因此您可能还想添加 -o cpu。
它也很少在第一次迭代时获得正确的 %cpu...我认为这可能是 top 在其他系统上的问题。
根据您想要获取的实际数据,可能会有更好的获取方法。解析交互式程序的输出是次优的。
【讨论】:
我使用了一个技巧,专门用于批处理模式。我使用选项“-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。
干杯,
路易斯
【讨论】: