无法将打开文件限制增加到 4096 以上 (Ubuntu)

mka*_*erg 55 linux ubuntu ulimit ubuntu-17.04

我在 Ubuntu 17.04 上。试图增加打开文件限制,但我在网上找到的所有说明都不起作用。我可以达到 4096,但不能超过那个。

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096
Run Code Online (Sandbox Code Playgroud)

那个有效。这不会:

$ ulimit -n 4097
bash: ulimit: open files: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

似乎是因为硬限制:

$ ulimit -Hn
4096
Run Code Online (Sandbox Code Playgroud)

我尝试将这些行添加到 /etc/security/limits.conf:

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535
Run Code Online (Sandbox Code Playgroud)

还将这一行添加到 /etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive:

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

自从这样做以来,我重新启动了我的电脑。对limits.conf 的更改似乎没有任何影响。硬限制仍然停留在 4096,阻止我进一步提高。如何增加我的打开文件限制?


这是一些额外的配置信息:

$ cat /proc/sys/fs/file-max 
1624668
Run Code Online (Sandbox Code Playgroud)

mka*_*erg 92

好吧,我终于想通了。我设置的限制/etc/security/limits.conf确实被应用了,但没有应用到图形登录。这可以从终端窗口验证:

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535
Run Code Online (Sandbox Code Playgroud)

更多的研究使我找到了这个错误报告,它让我指出了正确的方向。为了修改登录shell使用的限制,我们需要将以下行添加到/etc/systemd/user.conf

DefaultLimitNOFILE=65535
Run Code Online (Sandbox Code Playgroud)

该更改有效,但仅影响软限制。(让我们仍然受到 4096 的硬限制。)为了影响硬限制,我们必须/etc/systemd/system.conf用相同的更改进行修改。

我所做的更改/etc/pam.d不一定;它已经在工作,至少在 Ubuntu 上是这样。此外,没有必要添加行root*in limits.conf;单独添加用户名(mkasberg就我而言)就足够了。


总之

如果您想增加 显示的限制ulimit -n,您应该:

  • GUI 登录使用 systemd,它显然有自己的配置(`/etc/systemd/system.conf`),独立于终端会话的正常配置(`/etc/security/limits.conf`)。我对 systemd 不太了解,不知道为什么它是这样实现的。 (10认同)
  • `DefaultLimitNOFILE=65535` 成功了。但是为什么`/etc/security/limits.conf` 不起作用? (5认同)
  • @Suvitruf 因为它在 *systemd* 系统中被忽略。我发布了一个答案。 (2认同)
  • 只是想指出“root”用户的限制不能由“*”或组说明符指定。`root` 文字必须明确指定。 (2认同)
  • 在**重新启动**后,这对我有用。 (2认同)

Mar*_*377 20

无需更改/etc/security/limits.conf文件中的任何内容,如果您使用 systemd,它将被忽略。

(复制网络上另一个问题的修改答案......)

对于那些不想编辑默认/etc/systemd/system.conf/etc/systemd/user/conf文件的人来说,另一种选择:

  1. 创建一个/etc/systemd/system.conf.d/limits.conf包含以下内容的新文件:

    [Manager]
    DefaultLimitNOFILE=65535
    
    Run Code Online (Sandbox Code Playgroud)
  2. systemctl daemon-reexec以 root 身份运行

  3. 注销并重新登录

  4. 检查您的新限制ulimit -n

有关详细信息,请参阅systemd-system.conf联机帮助页

  • 只是为我注销没有用(Ubuntu 18.04),但重新启动就可以了。非常优雅的解决方案,谢谢。 (3认同)