以下會介紹在 Linux 檢查及設定開啟檔案數量的限制。
要檢查目前系統最大開啟檔案的數量、可以透過查看檔案 /proc/sys/fs/file-max, 例如:
# cat /proc/sys/fs/file-max
791176
791176
以上的數值 791176,是每個帳號的 login session 下最多可開啟的檔案數量。
對於一台伺服器,有些服務需要很大量的檔案,例如 Apache 及 MySQL 等、要更改這個數值,可以使用 sysctl 指令,sysctl 的作用是在系統執行時,設定 kernel 的參數。
例如想將開啟檔案限制設定為 500000, 指令是這樣的:
# sysctl -w fs.file-max=500000
輸入以上指令後,變更會立即生效,但當重新開機後,又會回復到原來的設定值,要永久改變這個數設,要開啟檔案 /etc/sysctl.conf:
# vi /etc/sysctl.conf
加下以下這行:
fs.file-max=500000
儲存檔案後離開,這樣下次開機後也會保留這個設定。
另一種情況是,想對個別帳號設定開啟檔案上限,需要開啟檔案 /etc/security/limits.conf:
# vi /etc/security/limits.conf
在檔案最後, 以以下格式的設定帳號開啟檔案上限, 每行一個帳號:
例如想對帳號 account01 設定 soft 及 hard limits:
|
1 2 |
account01 hard nofile 4096 account01 soft nofile 1024 |
儲存後離開編輯器。