如何获取用户打开的文件描述符的数量

如何获取用户打开的文件描述符的数量

我知道lsofls /proc/*/fd但据我所知,它们都不是原子的。因为在后一种情况下,我需要获取用户的所有 pid,然后按它们进行过滤,到那时可以关闭一些文件描述符。

也许有一些系统调用或其他东西,因为显然操作系统会跟踪该数字,因为如果用户的最大限制用尽,它会拒绝创建 FD。

答案1

我没有进行深入的搜索,但我认为 Linux 上不存在您要查找的内容。打开文件描述符不需要任何全局锁,只需要每个进程锁,因此在多核计算机上,无论您使用什么来计算打开的文件描述符的数量,都可以与其他线程同时运行打开或关闭其他核心上的文件。

Linux 对打开文件的总数没有全局限制。也没有明确的每个用户限制。每个用户有限制流程,以及文件描述符数量的每个进程限制,这间接限制了每个用户打开的文件,但没有明确跟踪。

探索/proc(即lsof在幕后所做的事情)是最好的。/proc是用于获取有关进程的信息的 Linux API。

相关内容