ulimit 是如何即时生效的?

ulimit 是如何即时生效的?

我添加了 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/ 的文件中配置的限制,最好在该目录中创建自己的文件,其名称按字母顺序排列在现有文件之后。系统按字母顺序读取文件,如果同一限制有多个配置,则后面的设置将覆盖前面的设置。

相关内容