R..*_*R.. 20
对于当前进程计数,您可以使用getrlimit获取文件描述符限制,然后迭代从0到该限制的所有整数并尝试fcntl使用该F_GETFD命令调用.它只会在实际打开的文件描述符上成功,让你计算它们.
编辑:我现在有一个更好的方法来做到这一点.获取之后rlimit,创建一个大数组struct pollfd(如果可能的话,尽可能大的限制;否则你可以将其分解为多个运行/调用),每个fd在范围内,并且events成员设置为0. poll使用0超时调用数组,并POLLNVAL在revents每个成员中查找标志.这将告诉您哪一个潜在的巨大fds集合在一个系统调用中是无效的,而不是每个fd一个系统调用.
Pol*_*ial 12
您可以阅读/proc/sys/fs/file-nr以查找已分配和可用文件系统句柄的总数以及允许的最大值.
[root@box proc]# cat /proc/sys/fs/file-nr
3853 908 53182
| | |
| | |
| | max: maximum open file descriptors
| free: total free allocated file descriptors
allocated: total allocated file descriptors since boot
Run Code Online (Sandbox Code Playgroud)
要计算当前使用的数量,请执行此操作allocated - free.您还可以通过执行来计算已使用描述符的百分比((allocated - free) / max) * 100
至于每个进程,我不确定你可以采用任何编程方式.
以下是有关如何使用它的教程lsof:http://linuxshellaccount.blogspot.com/2008/06/finding-number-of-open-file-descriptors.html
| 归档时间: |
|
| 查看次数: |
10859 次 |
| 最近记录: |