如何将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 

我怎样才能做到这一点?

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

 <count> <PID> <command> 

现在你只需要修改你的最终sort -rn ...只在<count>上sorting,这是微不足道的。

你也许应该从lsof的输出中删除最初的一行。