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

例如,如果我有一个脚本在/etc/security/limits.conf中设置了以下限制,那么是否需要重新启动系统才能使这些限制生效?

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


评论

注销应该足够

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

#1 楼

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

评论


如果我想为没有登录名的用户设置限制,比如我想为mongodb用户设置nofile限制为94000,该怎么办?没有重启怎么办?我是否只需要重启mongodb服务?

–́Alexej Magura
2014年1月9日19:35

@AlexejMagura您可以使用prlimit命令修改正在运行的进程的rlimits。

–布拉奇利
2014年1月9日在23:46

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

– Slyx
2014年1月10日15:01

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

–HVNSweeting
2015年1月19日,下午3:22

这是另一个问题。设计上的暴发户会忽略/etc/security/limits.conf中设置的限制。

– Slyx
2015年1月20日11:00

#2 楼

如果已安装prlimit(与util-linux-2.21一起安装),则将更改直接应用于正在运行的进程。例如,

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


参考此处

#3 楼

要为当前登录的用户临时设置打开文件的限制(例如'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


要将nofile更改为94000,您可以做:

ulimit -n 94000


#4 楼

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

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

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

#5 楼

引用@Tombart的答案


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

如果要在不重新启动的情况下应用更改,请通过添加以下内容来修改
/etc/pam.d/common-session文件末尾的这一行:

session required pam_limits.so