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

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

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

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096

这样可以,但是这样不行:

$ ulimit -n 4097
bash: ulimit: open files: cannot modify limit: Operation not permitted

这似乎是由于硬限制造成的:

$ ulimit -Hn
4096

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

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535

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

session required pam_limits.so

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


以下是一些额外的配置信息:

$ cat /proc/sys/fs/file-max 
1624668

答案1

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

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535

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

DefaultLimitNOFILE=65535

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

我所做的更改/etc/pam.d不一定;它已经可以工作了,至少在 Ubuntu 上是这样。此外,没有必要在 中添加行root和;仅添加用户名(在我的情况下)就足够了。*limits.confmkasberg


总之

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

  • 修改/etc/systemd/user.conf/etc/systemd/system.conf添加以下行(这负责图形登录):

     DefaultLimitNOFILE=65535
    
  • 使用以下几行进行修改/etc/security/limits.conf(这处理非 GUI 登录):

     mkasberg hard nofile 65535
     mkasberg soft nofile 65535
    
  • 重新启动计算机以使更改生效。

答案2

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

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

对于那些不想编辑默认文件的人来说,还有一个替代/etc/systemd/system.conf方案/etc/systemd/user/conf

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

    [Manager]
    DefaultLimitNOFILE=65535
    
  2. systemctl daemon-reexec以 root 身份运行

  3. 注销并再次登录

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

请参阅systemd-system.conf手册页了解详情。

答案3

TL;DR 我感觉需要集中答案,这样更容易找到。我花了很长时间才把所有部分拼凑起来,让它正常工作……

有 2 个地点需要考虑。

  1. GUI 会话

    $ grep DefaultLimitNOFILE /etc/systemd/system.conf
    DefaultLimitNOFILE=65535
    

    或者更好的是:

    $ grep NOFILE /etc/systemd/system.conf.d/limits.conf
    DefaultLimitNOFILE=65535
    
  2. shell 环境

    $ grep nofile /etc/security/limits.conf
    user soft nofile 65535
    user hard nofile 65535`
    

    或者更好的是:

    $ grep nofile /etc/security/limits.d/user.conf
    user soft nofile 65535
    user hard nofile 65535
    
  3. 修改上述文件中的设置后,重启然后使用以下命令检查限制: ulimit -n -Hn -Sn

答案4

使用 Ubuntu 17.04 我得到了所描述的硬限制:

[email protected]:~$ ulimit -Hn
4096

我可以使用来降低它ulimit,但不能增加它,就像问题所描述的那样。ulimit手册描述:

只有 root 可以增加硬限制。

/etc/security/limits.conf因此我尝试像这样设置一个更高的限制:

user hard nofile 9999

并且新的登录ssh localhost -l user给了我新的限制:

[email protected]:~$ ulimit -Hn
9999

我希望这对你也有用。

相关内容