Open-Files
為什麼 Linux 中打開文件的數量有限?
現在,我知道如何:
- 查找每個程序的打開文件限制:
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