Linux

在 /etc/sysctl.conf 與 /etc/security/limits.conf 中設置打開文件限制有什麼區別?

  • July 18, 2017

我已經閱讀了兩種增加允許打開文件計數的不同方法(如果重要,我正在嘗試為 root 進行修改)。

一種方法是使用以下內容更新設置/etc/security/limits.conf

*                soft    nofile          500000

*                hard    nofile          500000

root             soft    nofile          500000

root             hard    nofile          500000

要為活動 shell 進行設置,看起來你可以這樣做ulimit -n 500000,這不需要重新啟動或註銷/登錄,但可能需要重新啟動服務 (?)。


另一種選擇是更新/etc/sysctl.conf

echo 'fs.file-max = 500000' >> /etc/sysctl.conf

要為活動 shell 進行設置,我們可以執行sysctl -p,並使用 進行驗證sysctl fs.file-max

所以我的問題是,有什麼區別?有嗎?我上線了Ubuntu 14.04.2 LTS

不同之處在於範圍和應用方式。通過 sysctls 設置的打開文件限制適用於整個系統,而通過設置的限制/etc/security/limits.conf僅適用於滿足此處指定標準的內容。另一個主要區別是/etc/security/limits.conf限制是通過 ulimit 應用的,因此可以更容易地更改,而 sysctl 限製本質上是在核心本身中設置記憶體分配限制。

作為一般規則,您幾乎總是希望使用/etc/security/limits.conf,即使您在那裡使用萬用字元匹配設置全域限制,因為它更可靠,並且當遇到 ulimit 限制時,事情通常會比點擊核心記憶體分配更優雅地失敗限制。

引用自:https://unix.stackexchange.com/questions/379336