如何知道一个进程有效打开了多少个文件?

如何知道一个进程有效打开了多少个文件?

我知道我可以使用命令

lsof -p xxxx | wc -l

要知道进程中打开的文件数,它是可行的,但是,它效率太低了。我有一些服务器进程有太多套接字文件,wc -l 方法永远不会返回结果。那么,有什么有效的方法可以知道进程中打开了多少个文件呢?

谢谢。

答案1

有一个用于打开文件的 proc 接口:/proc/PID/fd/。它是一个符号链接目录。任何打开的套接字都将显示为链接到名为“socket:[INODE NUMBER]”的文件

答案2

使用ps -C <progname> -o pid= | wc -l位置程序名称是-listing中进程的名称ps

答案3

一些背景(用例场景)可能为答案提供更好的方向。

记录lsof描述了它调用的一些方法,这些方法可能会阻塞很长时间。我建议浏览一下拦截和超时部分lsof请参阅手册页。

您可以尝试以下操作,看看是否能得到理想的结果:

lsof -bwp $pid | wc -l

相关内容