Open-Files

為什麼 Linux 中打開文件的數量有限?

  • May 26, 2019

現在,我知道如何:

  • 查找每個程序的打開文件限制:ulimit -n
  • 計算所有程序打開的所有文件:lsof | wc -l
  • 獲取最大允許打開文件數:cat /proc/sys/fs/file-max

我的問題是:為什麼 Linux 中有打開文件的限制?

原因是作業系統需要記憶體來管理每個打開的文件,而記憶體是一種有限的資源——尤其是在嵌入式系統上。

ulimit -n作為 root 使用者,您可以更改每個程序(通過)和每個系統(例如)的最大打開文件數echo 800000 > /proc/sys/fs/file-max

請注意,lsof | wc -l總結了很多重複的條目(分叉的程序可以共享文件句柄等)。這個數字可能遠高於 中設定的限制/proc/sys/fs/file-max

要從 Linux 核心的角度獲取目前打開文件的數量,請執行以下操作:

cat /proc/sys/fs/file-nr

範例:此伺服器在最多 65536 個打開的文件中擁有 40096 個,儘管 lsof 報告的數字要大得多:

# cat /proc/sys/fs/file-max
65536
# cat /proc/sys/fs/file-nr 
40096   0       65536
# lsof | wc -l
521504

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