在 14.04+ 上無法將開啟檔案限制增加到超過 999999

在 14.04+ 上無法將開啟檔案限制增加到超過 999999

我正在嘗試透過 增加 root 使用者和非 root 使用者的開啟檔案限制/etc/security/limits.conf。但是,無法過去999999,任何高於此值的值都會恢復為預設值1024,我也無法將其設為無限制

這是我的limits.conf

* hard nofile 999999
* hard nofile 999999
root hard nofile 999999
root soft nofile 999999

以上工作正常並ulimit -n返回999999

但是,如果我將值提高一級或到unlimited-1或則infinity不起作用。ulimit -n返回1024

我在這裡提到:limit.conf - pam_limits 模組的設定檔 | Ubuntu 線上說明頁

謝謝

答案1

我知道晚了 10 個月,但您已為所有用戶設定了兩次硬限制。將第二行更改為軟 ulimit。

* hard nofile 999999
* soft nofile 999999
root hard nofile 999999
root soft nofile 999999

執行此操作後,您應該會看到:

$ ulimit -n
999999
$ 

您的文件應該始終適用於 root,因為限制已正確定義。

此外,您不能使用 -1、無窮大、無限制等,您必須使用文字值。支援的最大值在核心中定義,並在 /proc/sys/fs/nr_open 中公開。在我的 centos 7 和 debian strech 環境中,我得到相同的值:

$ cat /proc/sys/fs/nr_open
1048576
$

您還必須啟動新會話才能更新限制。

答案2

要使其正常運作,需要修改三個檔案:

  • /etc/security/limits.conf
  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

您已經在第一個文件中新增了所需的行,然後在其他兩個文件中需要此行:

session required pam_limits.so

請注意:

大多數資源忽略強調的是,您的限制確實可以很容易地被負責流程執行的任何東西修改。如果ulimit -n (以正確的用戶身份運行)為您提供了剛剛設置的數字,但cat /proc/{process_id}/limits 仍在打印較低的數字,則幾乎可以肯定您有一個進程管理器、一個初始化腳本,或類似的事情會擾亂你的極限。您還需要記住,進程繼承父進程的限制。

因此,如果存在這樣的進程,那麼您將必須修改設定檔才能使其正常運作。

來源: https://underyx.me/2015/05/18/raise-the-maximum-number-of-file-descriptors

相關內容