Ada*_*tan 60 linux scripting operating-system file-descriptor limit
我最近有一个"泄漏"文件描述符的Linux进程:它打开它们并没有正确关闭其中的一些.
如果我对此进行了监控,我可以提前告知 - 该过程已达到极限.
是否有一个很好的Bash\Python方法来检查Ubuntu Linux系统中给定进程的FD使用率?
编辑:
我现在知道如何检查有多少个打开的文件描述符; 我只需要知道进程允许多少个文件描述符.某些系统(如Amazon EC2)没有该/proc/pid/limits文件.
谢谢,
乌迪
caf*_*caf 116
计算条目/proc/<pid>/fd/.适用于该过程的硬和软限制可以在中找到/proc/<pid>/limits.
mar*_*k4o 34
由Linux内核提供的唯一接口,以获得资源限制getrlimit()和/proc/PID/limits. getrlimit()只能获得调用进程的资源限制. /proc/pid/limits允许您获取具有相同用户ID的任何进程的资源限制,并且可用于RHEL 5.2,RHEL 4.7,Ubuntu 9.04以及具有2.6.24或更高版本内核的任何分发.
如果您需要支持较旧的Linux系统,那么您必须自己调用该进程getrlimit().当然,最简单的方法是修改程序或它使用的库.如果您正在运行该程序,那么您可以使用LD_PRELOAD自己的代码加载到程序中.如果这些都不可能,那么您可以使用gdb附加到进程并让它在进程中执行调用.你也可以自己做同样的事情ptrace()来附加到进程,在内存中插入调用等,但是这样做非常复杂,不建议使用.
使用适当的权限,执行此操作的其他方法将涉及查看内核内存,加载内核模块或以其他方式修改内核,但我假设这些是不可能的.