/etc/security/limits.conf
中的更改是否需要重新启动才能生效? 例如,如果我有一个脚本在
/etc/security/limits.conf
中设置了以下限制,那么是否需要重新启动系统才能使这些限制生效?* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
#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
评论
注销应该足够编辑文件/etc/security/limits.d/90-nproc.conf并重新启动系统