微信公众号:51 码农网
专业编程问答社区
www.51manong.com
有时会发现程序运行打开一个文件失败。这个时候就可以考虑查看该进程打开的文件描述符是否已经达到上限。
1. 找个该进程对应的 id
[root@ky35z ~]# ps -ef | grep java
root 10045 10016 0 12:43 pts/1 00:00:00 grep --color=auto java
root 21715 1 0 Oct20 ? 00:01:48 /pcts/java/jdk1.7.0_75/bin/java -Djava....
2. 进入 /proc/pid 目录
[root@ky35z ~]# cd /proc/21715/
3. 查看 limits 中的文件描述符限制数量
[root@ky35z 21715]# sed -n "/open/p" limits
Max open files 65535 65535 files
可以看到最大可打开的文件数量的软限制为 65535。
4. 在进入 /proc/pid/fd 目录,统计总的打开的文件数量
[root@ky35z fd]# ls -lR | grep "^l" | wc -l
55
很显然,没有超出打开的最大文件数量限制。当然你也可以到底打开了哪些文件,使用命令
[root@ky35z fd]# ls -al