我可以使用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),则以可用格式提供大部分信息。 第sort和uniq -c仍然按照预期工作,给你留下一个未sorting的列表
<count> <PID> <command>
现在你只需要修改你的最终sort -rn ...只在<count>上sorting,这是微不足道的。
你也许应该从lsof的输出中删除最初的一行。