【问题标题】:Linux top -b show specific columns only [closed]Linux top -b 仅显示特定列[关闭]
【发布时间】:2013-11-06 15:44:35
【问题描述】:

我想捕获 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

【问题讨论】:

  • 手册页解释了如何选择列,寻找 -o 选项。
  • @aet 在我的版本中没有,-o 用于按字段排序。

标签: linux bash shell sed awk


【解决方案1】:

传递给:

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}'
【解决方案2】:

一切结合起来。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2018-04-19
    • 1970-01-01
    • 2014-03-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多