首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lsof fd /proc/$PID/fd与ulimit -n

lsof fd /proc/$PID/fd与ulimit -n
EN

Unix & Linux用户
提问于 2019-02-08 18:04:58
回答 1查看 1.2K关注 0票数 3

我试图找出为什么我的长时间运行的应用程序有时会破坏最大的打开文件描述符限制(ulimit -n)。我想定期记录应用程序打开了多少个文件描述符,这样我就可以看到何时会出现尖峰。

我知道lsof包含了一堆被排除在/proc/$PID/fd之外的项目.这些项目与打开的文件描述符限制有关吗?也就是说,我应该记录来自lsof还是来自/proc/$PID/fd的信息?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-02-08 19:06:53

ls -U /proc/PID/fd | wc -l博士会告诉你应该比ulimit -n少的号码。

/proc/PID/fd应该包含进程打开的所有文件描述符,包括但不限于奇怪的文件描述符,如epollinotify句柄、用O_PATH打开的“不透明”目录句柄、用signalfd()memfd_create()打开的句柄、accept()返回的套接字等等。

我不是一个很好的lsof用户,但是lsof也从/proc那里得到了它的信息。除了procfs之外,我认为没有其他方法可以获得进程在Linux上打开的文件描述符列表,或者通过附加到ptrace进程。

无论如何,进程的当前和根目录、also文件(包括它自己的二进制和动态库)和控制终端不被计算在ulimit -n (RLIMIT_NOFILE)设置的限制范围内,而且它们也不会出现在/proc/PID/fd中,除非进程显式地持有打开的句柄。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/499518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档