我可以使用 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),这将以可用的格式提供您想要的大部分信息。第一个sort
和uniq -c
仍然按预期工作,这会给您留下一个未排序的列表
<count> <PID> <command>
现在您只需要修改最终结果sort -rn ...
以仅对 <count>
简单的内容进行排序。
您可能也应该从 lsof 的输出中删除初始行。