`lsof -p <pid> | 和有什么区别?wc -l` 和 `ls /proc/<pid>/fd | wc -l`?

Jar*_*red 16 linux lsof ulimit

背景:我正在监视用于为特定用户运行进程的 ulimit。(我偶尔会看到以不正确的限制开始的进程。)我问了几个自称是 Linux 专家的人,一个建议lsof -p <pid>,另一个建议ls /proc/<pid>/fd,但都没有肯定哪个更准确地反映了对最大值的实际计数进程的打开文件限制。

那么,它是哪个?

lsof -p <pid> | wc -l
Run Code Online (Sandbox Code Playgroud)

或者

ls /proc/<pid>/fd | wc -l
Run Code Online (Sandbox Code Playgroud)

请详细说明区别。谢谢!

Kvi*_*sle 13

lsof还将为您提供内存映射的 .so 文件 - 从技术上讲,这与应用程序控制的文件句柄不同。/proc/<pid>/fd是打开文件描述符的测量点 - 但是:在 proc-man 页中提到 - 如果多线程程序的主线程已终止,则该目录将不可用。

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -l将向您显示与 相同的项目ls /proc/<pid>/fd | wc -l

内存映射在/proc/<pid>/maps.