我添加了 2 行
/etc/security/limits.conf
myuser soft nofile 16384
myuser hard nofile 16384
...没有任何效果:
su -
sysctl -p
su myuser
ulimit -n
1024
重要的是,这无需用户先登录即可生效,即以 root 身份我代表他启动一个脚本。
答案1
将其添加到 /etc/security/limits.conf:
* soft nofile 16384
* hard nofile 16384
并将类似的内容添加到 /etc/profile 中,它将应用于系统范围内的所有帐户:
ulimit -n 16384
但是,为了使 ssh 和 su 等工具遵守 limits.conf 文件,您需要将以下内容添加到相应的 pam.d 文件中(如果尚未添加),例如,对于 su,添加到 /etc/pam.d/su,对于 ssh,添加到 /etc/pam.d/sshd:
session required /lib/security/pam_limits.so
我相信,只要对相应的文件进行上述 pam.d 编辑,您的特定问题就可以得到解决。
答案2
你可以尝试一下这些线路吗?
- 暂无文件 16384
并观察其如何工作。
用户的.bashrc 或其他文件中是否有任何设置。
答案3
如果一切都失败了,您的脚本是否允许执行myuser
以下操作:
ulimit -SHn 16384
答案4
如果 /etc/security/limits.conf 中的更改似乎没有效果,请检查 /etc/security/limits.d/ 是否包含覆盖您的限制设置的文件。
如果您需要覆盖位于 /etc/security/limits.d/ 的文件中配置的限制,最好在该目录中创建自己的文件,其名称按字母顺序排列在现有文件之后。系统按字母顺序读取文件,如果同一限制有多个配置,则后面的设置将覆盖前面的设置。