【问题标题】:Getting the first 5 lines from PID and COMMAND using top使用 top 从 PID 和 COMMAND 获取前 5 行
【发布时间】:2022-01-20 10:46:28
【问题描述】:

嗨,我正在努力弄清楚如何在打开顶部时获取 PID 和 COMMAND 标头的前 5 行

目前我正在使用

top | awk '{print $1,$2}NR==5{exit}'

这显然很烦人:

Processes: 390
2021/12/17 13:47:48
Load Avg:
CPU usage:
SharedLibs: 146M

【问题讨论】:

    标签: linux bash shell unix awk


    【解决方案1】:

    使用您显示的示例,请尝试以下代码。由于您需要前 5 个 PID 详细信息,因此此处无法打印前 5 行。所以跳过 top 输出的前 6 行(关于系统细节)。

    top -b | awk 'FNR>=7 && FNR<=12{print $1};FNR==12{exit}'
    

    解释: 对上述代码的简单解释是,将top 命令的输出作为标准输入传递给awk。然后在awk程序检查条件如果行号是从第7到第12然后打印它并在第12行退出程序。

    其中top -b选项的定义如下man top:

    b :Batch-mode operation 以 Batch 模式启动 top,可以是 用于将输出从顶部发送到其他程序或文件。在 这种模式,top 将不接受输入并运行直到迭代 您使用 `-n' 命令行选项设置的限制或直到被杀死。

    【讨论】:

    • 我得到的结果包括其他数据字段,而不仅仅是 PID 和 COMMAND。我将如何修改它以仅显示这两个字段
    • @Alex,好的,请尝试top -b | awk 'FNR&gt;=7 &amp;&amp; FNR&lt;=12{print $1};FNR==12{exit}' 代码一次,如果一切顺利,请告诉我?
    • 在修改印刷品以包含 12 美元后效果极佳。谢谢!
    【解决方案2】:

    其他解决方案:

    top -b 用于批处理模式
    top -n 1 单发(无循环)

    获取线

    • 带有 --> 头 -12 |尾 -6
    • 或 --> awk 'FNR>=7 && FNR
    • 或 --> sed -n 7,12p

    打印 PID 和命令

    • awk '{print $1, $NF}'

    ...

    top -b|head -12|tail -6|awk '{print $1, $NF}'
    top -b -n 1|awk 'FNR>=7 && FNR<=12{print $1, $NF}'
    top -b -n 1|sed -n 7,12p|awk '{print $1, $NF}'
             
    
    
             
    

    【讨论】:

    • 接受的答案没有涵盖什么?你能edit你的答案提供更多解释吗?
    猜你喜欢
    • 2016-10-29
    • 2022-01-04
    • 2014-03-22
    • 2013-04-17
    • 2019-08-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多