使用 top 从 PID 和 COMMAND 获取前 5 行
Posted
技术标签:
【中文标题】使用 top 从 PID 和 COMMAND 获取前 5 行【英文标题】:Getting the first 5 lines from PID and COMMAND using top 【发布时间】:2022-01-20 10:46:28 【问题描述】:嗨,我正在努力弄清楚如何在打开顶部时获取 PID 和 COMMAND 标头的前 5 行
目前我正在使用
top | awk 'print $1,$2NR==5exit'
这显然很烦人:
Processes: 390
2021/12/17 13:47:48
Load Avg:
CPU usage:
SharedLibs: 146M
【问题讨论】:
【参考方案1】:使用您显示的示例,请尝试以下代码。由于您需要前 5 个 PID 详细信息,因此此处无法打印前 5 行。所以跳过 top 输出的前 6 行(关于系统细节)。
top -b | awk 'FNR>=7 && FNR<=12print $1;FNR==12exit'
解释: 对上述代码的简单解释是,将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>=7 && FNR<=12print $1;FNR==12exit'
代码一次,如果一切顺利,请告诉我?
在修改印刷品以包含 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<=12print $1, $NF'
top -b -n 1|sed -n 7,12p|awk 'print $1, $NF'
【讨论】:
接受的答案没有涵盖什么?你能edit你的答案提供更多解释吗?以上是关于使用 top 从 PID 和 COMMAND 获取前 5 行的主要内容,如果未能解决你的问题,请参考以下文章