Linux top命令-b选项:只显示特定列

7
我希望您能够将top命令的输出捕获并在另一个程序中使用,但我只需要某些信息,更准确地说,我只需要USER、PID、CPU和COMMAND列的信息。我已经有了命令top -b -n 1 | sed -n '7,12p'来过滤前5个结果,但由于我不太了解sed/awk,所以无法进一步处理。
例如:这是我的输出结果:
PID USER    PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  
4 root      20   0   98748  50608   4608 S  6.4  4.9 212:12.16 X  
1 root      20   0    2132    128     96 S  0.0  0.0   0:07.62 init  
2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd  
3 root      20   0       0      0      0 S  0.0  0.0   7:28.54 ksoftirqd/0

以下是我想要的内容

PID USER %CPU COMMAND  
 4 root  6.4 X  
 1 root  0.0 init  
 2 root  0.0 kthreadd  
 3 root  0.0 ksoftirqd/0

1
手册说明如何选择列,请查找“-o”选项。 - aet
3
在我的版本中,-o用于按字段排序。 - axujen
2个回答

5

传递给:

awk '{print $1,$2,$9,$NF}'

这个可行,添加了一些格式化,所以最终命令看起来像 top -b -n 1 -o +%CPU | sed -n '7,12p' | awk '{printf "%6s %-4s %-4s %-s\n",$1,$2,$9,$NF}' - axujen

1

一切结合在一起。

top -b -n 1 | awk 'NR>6 && NR<13 {printf "%6s %-4s %-4s %-s\n",$1,$2,$9,$NF}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接