我们可以仅列出由特定 PID 打开的文件,如下所示
lsof -p 1000
lsof -p 1000 | wc -l
我们如何列出/统计特定程序/命令(例如 java)打开的文件?
如果我们能够对每个程序打开的文件数量进行分组,那就更好了。我想检查哪些程序打开的文件数量较多。
我想要类似的东西
lsof -c "java" # -c is an imaginary argument similar to -p for process
我使用Ubuntu 20.04。
答案1
我认为在 lsof 上实现这样的事情没有争议,而且我不知道 lsof 二进制文件上有哪些可用的标志。
我认为你可以用这样的东西来实现你想要的,也许用“grep java”替换头部:
lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head
拉索夫:基本上我列出了所有打开的文件
awk '{打印$1}':仅打印第一列,即进程名称
种类:您需要在应用 uniq 之前进行排序,否则它将分割计数,因此 java 可能会出现多次,具体取决于 lsof 打印的顺序。
优衣库-c:按进程名称和计数行进行分组
最后 2 个是为了可读性。
这样做的问题是所有的java实例都会被组合起来,我想你可以对PID应用相同的逻辑,然后通过PID过滤你的java实例和子进程。
希望能帮助到你。