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

背景:我正在监视特定用户正在运行的进程的ulimit。 (我偶尔也看到了一个不正确的限制开始的进程)。我问了一些自称Linux的大师,一个build议lsof -p <pid> ,另一个build议ls /proc/<pid>/fd ,但是对于哪一个更准确地反映了对于一个处理的最大打开文件限制的实际计数而言都是不积极的。

那么,这是什么?

 lsof -p <pid> | wc -l 

要么

 ls /proc/<pid>/fd | wc -l 

请详细说明差异。 谢谢!

lsof也会给你内存映射的.so-files – 这在技术上与应用程序控制的文件句柄不一样。 /proc/<pid>/fd是打开文件描述符的测量点 – 但是:在proc-man页面中提到 – 如果multithreading程序的主线程已经终止,该目录将不可用。

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

内存映射可以在/proc/<pid>/maps