2016-07-29 25 views

回答

2

必须提供-w选项没有参数并通过LINES环境变量指定的行的期望数量:

LINES=20 top -b -n 1 -w 

注意,输出的宽度通过控制COLUMNS环境变量。所以,如果在你的环境中设置,必须重写它上面的调用:

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

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

此工程的top包含在Ubuntu 15.10版本。

$ 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 
+0

在Linux上为我生成't T % K K'(每个单独一行)。 – Kusalananda

+0

@Kusalananda你有环境变量** COLUMNS **设置为1吗? – Leon

+0

'env COLUMNS = 80 LINES = 20 top -b -n 1 -w'产生与以前相同的输出。 'env LINES = 20 top -b -n 1 -w 80'给了我超过20行(所有进程)。 – Kusalananda

2

对于OS X答案:

$ top -l 1 -n 5 

但OS X top各种各样的PID默认情况下,所以你可能要添加-o cpu太。

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

根据您希望获得的实际数据,可能有更好的方法来获取它。解析交互式程序的输出并不理想。

+0

..对于OS X它工作..Nice命令.. –

0

我使用一种技巧,特别是批处理模式。我使用选项“-A”将exit退出到grep,以在比赛结束后显示N行。

正如上面第一行有这样的:“平均负载”,我用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 

这样,它会继续在批处理模式下,只有处处显示着前N输出线。

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

干杯,

路易斯

相关问题