題 無法增加超過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

19
2018-04-17 17:54


起源




答案:


好的,我終於想通了。我正在應用/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.conf中。改變限制 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
    

31
2018-04-18 14:34



DefaultLimitNOFILE=65535 做了伎倆。但為什麼 /etc/security/limits.conf  不行嗎? - Suvitruf
GUI登錄使用systemd,顯然它有自己的配置(/etc/systemd/system.conf)這與終端會話的正常配置無關(/etc/security/limits.conf)。我對systemd知之甚少,不知道為什麼以這種方式實現它。 - mkasberg
謝謝!搜索和嘗試所有內容的時間,但這解決了問題。 - Roger Collins
@Suvitruf,因為它被忽略了 systemd 系統。我正在發布一個答案。 - Marc.2377


無需更改任何內容 /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 作為根

  3. 註銷並再次登錄

  4. 檢查你的新限制 ulimit -n

參考 systemd-system.conf 手冊頁 詳情。


3
2018-05-12 21:57





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

user@paresh.com:~$ ulimit -Hn
4096

我可以用它降低它 ulimit,但不是增加它,正如問題所描述的那樣。 ulimit 手冊描述:

只有root才能增加硬限制。

所以我試著設定一個更高的限制 /etc/security/limits.conf 像這樣:

user hard nofile 9999

和一個新的登錄 ssh localhost -l user 給了我新的限制:

user@paresh.com:~$ ulimit -Hn
9999

我希望這也適合你。


0
2018-04-18 00:50