linux会为每个用户登录系统打开最大文件数都有限制, 这个限制通过 ulimit -n 可以看到, 一般是 1024 .
在一些并发或多线程情况下, 需要突破这个限制.
修改
第一步 编辑 /etc/security/limits.conf 并确保其包含下列行:
* soft nofile 65535
* hard nofile 65535
这里 * 表示所有用户, 但有的系统不认, 需要具体的用户名, 比如:
root soft nofile 65535
root hard nofile 65535
第二步 编辑 etc/pam.d/login , 确保有如下行:
session required pam_limits.so
第三步 退出终端重新登录.
验证
使用 ulimit -Hn 和 ulimit -Sn 命令可以分别查看当前进程用户的 hard 和 soft 的限制数.
或者当前用户启动某个程序后, 通过 cat /proc//limits (pid是该进程的, 或者其随便一个子进程的pid)