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

Ale*_*ura 180 limit ulimit

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

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

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Run Code Online (Sandbox Code Playgroud)

Sly*_*lyx 145

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

  • 如果我想为没有登录名的用户设置限制,比如我想将 `mongodb` 用户的 `nofile` 限制设置为 `94000`,该怎么办?不重启我怎么做到的?我只需要重新启动`mongodb` 服务吗? (22认同)
  • @Gilles,感谢您的精确,我编辑了我的答案以避免歧义。然而,使用 `sudo service mongodb restart` 启动新服务足以让服务以新的限制值运行。 (8认同)
  • 如果您使用的是 Ubuntu,并且 mongodb 是由 upstart 启动的,那么更改这些限制不会影响 mongodb。由于 ``upstart`` 不读取 /etc/security 配置 https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 您必须在其 upstart 配置文件中设置 ``limit`` 节。 (8认同)
  • 这是另一个问题。`upstart` 的设计忽略了 `/etc/security/limits.conf` 中设置的限制。 (6认同)
  • @AlexejMagura 您可以使用 `prlimit` 命令修改正在运行的进程的 rlimits。 (4认同)

Ram*_*Ram 49

如果安装了 prlimit,则将更改直接应用于正在运行的进程(随 util-linux-2.21 一起提供)

prlimit --pid <pid> --<limit>=<soft>:<hard>
Run Code Online (Sandbox Code Playgroud)

例如

prlimit --pid 12345 --nofile=1024:2048
Run Code Online (Sandbox Code Playgroud)

参考这里


Boo*_*ogy 30

为您当前登录的用户(例如“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
Run Code Online (Sandbox Code Playgroud)

要更改nofile94000,您可以执行以下操作:

ulimit -n 94000
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 21

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

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

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


ser*_*inc 7

引用@Tombart 的回答

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

如果要在不重启的情况下应用更改,请/etc/pam.d/common-session在文件末尾添加以下行进行修改 :

session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)