Linux 中增加最大開啟檔案數


如果您在使用 Linux,那麼您一定多次遇到過 **“開啟的檔案太多 (24)”** 錯誤。Linux 作業系統提供了一種限制每個使用者可以使用的檔案數量的方法。本文提供了有關如何在 Linux 作業系統中增加開啟檔案數或檔案描述符數量的見解。

ulimit 命令可以控制 shell 或程序,並且需要 **以 root 使用者身份登入**。**ulimit** 命令用於設定僅適用於您當前會話的檔案限制。

使用以下命令顯示最大開啟檔案描述符數量 -

# cat /proc/sys/fs/file-max
801841

在上述命令中,使用者在一個登入會話中可以開啟 **801841** 個檔案。要檢視檔案描述符的硬限制和軟限制,請使用以下命令 -

檔案描述符的硬限制

硬限制值只能由 root 使用者修改。非 root 使用者無法超過硬限制。

我們可以使用以下命令檢查硬限制 -

$ ulimit -Hn
4096

在上述命令中,“H”選項表示硬限制,“n”表示檔案數量。

檔案描述符的軟限制

軟限制值可以隨時由使用者程序修改。它用於停用核心轉儲。

我們可以使用以下命令檢查硬限制 -

$ ulimit -Sn
1024

在上述命令中,“S”選項表示軟限制,“n”表示檔案數量。

修復“開啟的檔案太多”錯誤

可以透過在核心變數 /proc/sys/fs/file-max 中設定新值來增加最大開啟檔案數,如下所示 -

$ sysctl -w fs.file-max=100000
fs.file-max = 100000

上述命令將最大開啟檔案限制強制設定為 **100000**,並且此設定適用於特定會話。如果您希望將此值設定為永久生效,則需要編輯 /etc/sysctl.conf 檔案並新增以下行 -

$ vi /etc/sysctl.conf

示例輸出應如下所示 -

........
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#fs.file-max = 50000

將 file-max 值替換為 **100000** 並儲存。使用者需要登出並重新登入才能使更改生效,或者只需鍵入以下命令 -

$ sysctl -p

要進行驗證,請使用以下命令 -

$ cat /proc/sys/fs/file-max

示例輸出應如下所示 -

$ cat /proc/sys/fs/file-max
100000

使用者級檔案描述符限制

上述過程描述了系統級檔案描述符限制。但是,我們可以設定使用者級檔案描述符限制。要指定使用者級檔案描述符限制,您可以透過編輯 /etc/security/limits.conf 檔案來實現。

要編輯檔案,請使用以下命令 -

$ vi /etc/security/limits.conf

示例輸出應如下所示 -

.....
#*        soft       core       0
#root     hard       core       100000
#*        hard       rss        10000
#@student hard       nproc      20
#@faculty soft       nproc      20
#@faculty hard       nproc      50
#ftp      hard       nproc      0
#ftp      -          chroot     /ftp
#@student -          maxlogins 4

將以下行新增到 limits.conf 檔案 -

#tp    soft    nofile    4096
#tp    hard    nofile    10240

這裡 **tp** 是系統使用者的使用者名稱。儲存並關閉檔案。要檢視限制,請使用上面顯示的 ulimits 命令。

恭喜!現在,您知道“如何增加最大開啟檔案數或檔案描述符”。我們將在下一篇 Linux 文章中學習更多關於此類命令的知識。繼續關注!

更新於: 2019-10-21

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告