【发布时间】: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
【问题讨论】:
嗨,我正在努力弄清楚如何在打开顶部时获取 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
【问题讨论】:
使用您显示的示例,请尝试以下代码。由于您需要前 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' 命令行选项设置的限制或直到被杀死。
【讨论】:
top -b | awk 'FNR>=7 && FNR<=12{print $1};FNR==12{exit}' 代码一次,如果一切顺利,请告诉我?
其他解决方案:
top -b 用于批处理模式
top -n 1 单发(无循环)
获取线
打印 PID 和命令
...
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}'
【讨论】: