首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查Linux中给定进程的开放FD限制

检查Linux中给定进程的开放FD限制
EN

Stack Overflow用户
提问于 2009-08-31 09:39:02
回答 7查看 103.1K关注 0票数 65

我最近遇到了一个Linux进程,它“泄漏”了文件描述符:它打开了文件描述符,但没有正确地关闭其中一些描述符。

如果我监测到了这一点,我可以提前知道这个过程正在达到它的极限。

在Ubuntu Linux系统中,有没有一种很好的、Bash或Python的方法来检查给定进程的FD使用率?

编辑:

我现在知道如何检查有多少打开的文件描述符;我只需要知道一个进程允许多少个文件描述符。有些系统(如亚马逊EC2)没有/proc/pid/limits文件。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-31 12:34:14

/proc/<pid>/fd/中的条目进行计数。适用于该进程的硬限制和软限制可在/proc/<pid>/limits中找到。

票数 128
EN

Stack Overflow用户

发布于 2009-09-06 00:45:51

Linux内核提供的获取资源限制的唯一接口是getrlimit()/proc//limitsgetrlimit()只能获取调用进程的资源限制。/proc/pid/limits允许您获取具有相同用户id的任何进程的资源限制,并且在RHEL5.2、RHEL4.7、Ubuntu9.04以及带有2.6.24或更高版本内核的任何发行版上都可用。

如果您需要支持较旧的Linux系统,那么您必须让进程本身调用getrlimit()。当然,要做到这一点,最简单的方法是修改程序或它使用的库。如果您正在运行该程序,则可以使用LD_PRELOAD将您自己的代码加载到该程序中。如果这些都不可能,那么您可以使用gdb附加到进程,并让它在进程内执行调用。你也可以自己做同样的事情,使用ptrace()附加到进程,将调用插入到它的内存中,等等,但是这是非常复杂的,不推荐这样做。

有了适当的权限,其他方法将涉及查看内核内存、加载内核模块或以其他方式修改内核,但我假设这些都是不可能的。

票数 34
EN

Stack Overflow用户

发布于 2009-08-31 09:41:29

您可以尝试编写对给定pid定期调用lsof -p {PID}的脚本。

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

https://stackoverflow.com/questions/1356675

复制
相关文章

相似问题

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