如何结合 lsof stat 和 ps 在一行 bash 命令中获取更多信息

如何结合 lsof stat 和 ps 在一行 bash 命令中获取更多信息

我可以使用 lsof 获取进程的最多打开文件统计信息,如下所示:

$ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5
  17955 11945
  10282 2786
   5980 32152
   1920 27803
   1786 32107

现在我想用一行 bash 命令将结果扩展为如下所示,

$ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5 ...
  17955 11945  java
  10282 2786   python
   5980 32152  ruby
   1920 27803  go
   1786 32107  rust

我怎样才能实现这个目标?

答案1

如果您使用 awk 以相反的顺序打印 $1(命令)和 $2(PID)($2, $1),这将以可用的格式提供您想要的大部分信息。第一个sortuniq -c仍然按预期工作,这会给您留下一个未排序的列表

<count> <PID> <command>

现在您只需要修改最终结果sort -rn ...以仅对 <count>简单的内容进行排序。

您可能也应该从 lsof 的输出中删除初始行。

相关内容