修改并应用limits.conf,无需重新启动


16

我添加了一行/etc/security/limits.conf来增加打开文件的数量。

*    hard nofile 4096
root hard nofile 16384

但是,当我运行ulimit -n它时,它说1024是默认值。我注销并登录,但仍然看到1024。如何应用更改?

Answers:


8

如果您使用bashulimit -n将仅显示软限制。要获得硬限制,您需要做ulimit -Hn

在我的系统上,我看到以下内容:

$ ulimit -n
1024
$ ulimit -Hn
4096

16

通过ulimit命令进行的更改:

$ ulimit -n 4096
$ ulimit -Hn 16384

仅适用于当前用户和会话。为了使其永久,您必须/etc/security/limits.conf通过添加限制来进行修改:

* soft nofile 4096
* hard nofile 16384

但是,通配符*不适用于root用户。为此,您必须明确声明:

* soft nofile 4096
* hard nofile 16384
root soft nofile 4096
root hard nofile 16384

这些限制将在重新启动后应用。

如果要应用更改而无需重新启动,请/etc/pam.d/common-session通过在文件末尾添加以下行来进行修改:

session required pam_limits.so

下次登录时,您应该会看到更新的限制,您可以检查它们(软限制和硬限制):

$ ulimit -a
$ ulimit -Ha

2
我对这种方法有疑问,这确实很奇怪。我正在使用Ubuntu 14并pam_limits.so在中启用/etc/pam.d/common-session。我已经在/etc/security/limits.conf用户x中配置了nofile64000的硬限制和软限制。sudo -u x然后ulimit -a显示没有应用更改。我意识到了这一点,su并且sudo具有不同的pam配置,因此为了使其正常工作,我需要启用pam_limits.soin /etc/pam.d/common-session-noninteractive。如果您想知道用例是什么-我使用ansible和sudo更改用户。
hahcho

1
由于某种原因,我必须将其添加到/etc/pam.d/common-session-noninteractive它才能正常工作。
Sumit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.