当前位置: 首页>>技术教程>>正文


linux – 无法将打开文件的限制增加到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

最佳思路

好的,我终于明白了。我在/etc/security/limits.conf中设置的限制已应用,但未将其应用于图形登录。可以从终端窗口中这样验证:

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

更多的研究使我想到了bug report,这使我指向了正确的方向。为了修改登录shell使用的限制,我们需要在/etc/systemd/user.conf中添加以下行:

DefaultLimitNOFILE=65535

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

我在/etc/pam.d中所做的更改是不必要的。至少在Ubuntu上,这已经起作用了。另外,也没有必要在limits.conf中更改root*的设置。至少对于我的用例而言,更改mkasberg的限制就足够了。


综上所述

如果要增加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
    
  • 重新启动计算机以使更改生效。

次佳思路

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

(在网络上复制修改后的answer to another question …)

对于不希望编辑默认/etc/systemd/system.conf/etc/systemd/user/conf文件的用户的替代方法:

  1. 使用以下内容创建一个新文件/etc/systemd/system.conf.d/limits.conf

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

  3. 注销并再次登录

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

有关详细信息,请参见systemd-system.conf手册页。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9582.html,未经允许,请勿转载。