小编Sau*_*lva的帖子

尝试获取每个进程打开的文件数时与 lsof 命令的差异

我正在尝试获取每个进程的打开文件列表。我从PerlMonks运行了以下单行:

lsof | perl -lane '$x{"$F[0]:$F[1]"}++;
END { print "$x{$_}\t$_" for sort {$x{$a}<=>$x{$b}} keys %x}'
Run Code Online (Sandbox Code Playgroud)

它返回打开文件的总数,以及进程名称和 pid。结果按升序排列,最后一行如下:

1065702 java:15437
Run Code Online (Sandbox Code Playgroud)

所以当我运行时lsof -p 15437,我希望它返回相同的数字,但是我得到:

$ lsof -p 15437 | wc -l
403
Run Code Online (Sandbox Code Playgroud)

为什么会出现差异?

附录

差异的第三个来源:

$ cd /proc/15437/fd
$ ls -1 | wc -l
216
Run Code Online (Sandbox Code Playgroud)

lsof

5
推荐指数
1
解决办法
1689
查看次数

标签 统计

lsof ×1