/etc/security/limits.conf中的更改是否需要重新启动?


144

更改是否/etc/security/limits.conf需要重新启动才能生效?

就像我有一个在中设置以下限制的脚本一样/etc/security/limits.conf,这是否要求重新启动系统才能使这些限制生效?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000

2
注销应该足够
UVV 2014年

编辑文件/etc/security/limits.d/90-nproc.conf并重新启动系统

Answers:


108

否,但是您应该关闭所有活动的会话窗口。他们仍然记得旧的价值观。换句话说,注销并重新登录。每个远程新会话或本地安全Shell都会生效限制更改。


17
如果我想为没有登录名的用户设置限制,比如我想为该用户设置nofile限制94000,该mongodb怎么办?没有重启怎么办?我需要重启mongodb服务吗?
Alexej Magura 2014年

2
@AlexejMagura您可以使用prlimit命令修改正在运行的进程的限制。
Bratchley 2014年

7
@Gilles,感谢您的精确性,我编辑了答案以避免歧义。但是,使用sudo service mongodb restart来启动新服务足以使该服务以新的限制值运行。
Slyx 2014年

6
如果您使用的是Ubuntu,并且mongodb由upstart启动,则更改这些限制不会影响mongodb。由于upstart未读过/ etc / security配置bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 ,因此必须limit在其upstart配置文件中设置节。
HVNSweeting

5
这是另一个问题。upstart设计忽略了中设置的限制/etc/security/limits.conf
Slyx 2015年

35

如果您安装了prlimit,则将更改直接应用于正在运行的进程(util-linux-2.21附带)

prlimit --pid <pid> --<limit>=<soft>:<hard>

例如

prlimit --pid 12345 --nofile=1024:2048

请参考这里


29

要为当前登录的用户(例如'root')临时设置打开文件的限制:您还可以使用ulimit命令更改当前shell中的值。但是,除非您是root,否则只能向下调整硬限制。

例:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

若要更改nofile94000,你可以这样做:

ulimit -n 94000

15

限制是从父流程继承到其子流程的。以root用户身份运行的进程可以任意更改限制。其他过程不能增加硬性限制。因此,登录过程设置的硬限制会影响会话中的所有过程。

如果更改/etc/security/limits.conf,这将影响所有新会话以及这些新会话中的流程。它不会影响已经在运行的进程,也不会影响已经在运行的进程启动的进程。

因此,如果您需要增加一些限制,则必须注销然后重新登录,或者开始另一个会话(例如ssh localhost,使用或在另一个控制台上)。


4

引用@Tombart的答案

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

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

session required pam_limits.so
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.