在 ubuntu 操作系统下,远程调试程序报打开文件过多的错误。根据网络教程一般的文件打开数修改有以下几个地方:
1. 修改 /etc/security/limits.conf 文件,增加 nofile 的数量:
#...
#@student - maxlogins 4
* soft nofile 65536
* hard nofile 65536
# End of file
2. 修改 /etc/pam.d/common-session 以及/etc/pam.d/common-session-noninteractive 两个文件,分别加上
session required pam_limits.so
3. 在用户登录脚本(/etc/bash.bashrc、或/etc/profile、或 ~/.bashrc)中增加限制说明
ulimit -n 65535
这样在一般情况下就生效了。生效后就可以使用 ulimint -n 来查看结果。
但由于在远程调试环境使用了 ssh,通过以上配置。远程调试程序仍是重复报错。后考虑到应该是在配置 ssh 服务的时候,修改了sshd_config配置文件,导致用户登录时 ulimit 总是不能超过 4096。在设置如下两个参数后,PAM 配置生效后,ulimit 才按预想的设定。
UseLogin yes
UsePAM yes
(配置变更完成后需要重新启动机器)。