引言
在Linux中,可以更改打開文件的最大數量。使用ulimit命令修改這個限制值,從而控制文件資源的訪問閾值。
在本文中,我們將展示如何檢查當前打開的文件和文件描述的限制,但有個前提,你得有root權限。root用戶本身,或者sudoer組成員。
首先,讓我們看看如何找出Linux系統上打開的文件描述符的最大數量。
查找Linux打開文件限制
該值存儲在下面的文件內
可以看到,該數值顯示了用戶在每個登錄會話中可以打開的文件數量。根據不同的系統,結果可能會有所不同。
例如,在有的CentOS服務器上,限制設置為818354,而在有的Ubuntu服務器上,默認限制設置為176772。
如果你想看到硬和軟的限制,可以使用以下命令:
查看硬限制
<code>ulimit
-Hn/<code>
查看軟限制
<code>ulimit
-Sn/<code>
想要查看其它用戶的限制措施,可以使用 su 指令切換過去,再執行 ulimit 查看。
如何在Linux中檢查系統範圍的文件描述符限制
如果服務器正在運行,但是一些應用程序可能需要對打開的文件描述符數量調高。比如,運行中的MySQL/MariaDB服務,或Apache web服務器就是一個很好的例子。
那麼可以通過編輯內核指令fs.file-max來增加Linux中打開文件的限制。為此,我們需要使用sysctl程序。
sysctl用於在運行狀態中配置內核參數。
例如,要將打開文件的限制增加到500000,可以使用root執行以下命令:
<code>sysctl -w fs.file-max
=500000
/<code>
然後使用以下命令檢查其當前值:
<code>cat /proc/sys/fs/file-max
/<code>
使用上述命令,你所做的更改將僅在下一次重新啟動之前保持。如果你想永久有效,則必須編輯以下文件:
<code>vi
/etc/sysctl.conf/<code>
追加如下行:
<code>fs.file-max
=500000
/<code>
當然,也可以根據需要更改數值。要再次驗證更改是否生效,請使用:
<code>cat /proc/sys/fs/file-max
/<code>
用戶需要註銷並再次登錄才能使更改生效。如果想立即使限制起作用,運行以下命令:
<code>sysctl
-p/<code>
Linux中根據用戶級別設置限制
上面的示例演示瞭如何設置全侷限制,但是你可能希望對每個用戶應用限制。你需要root身份編輯以下文件:
<code>vi
/etc/security/limits.conf/<code>
如果是一名Linux管理員,需要對該文件爛熟於胸。網上也有很多示例,介紹了通過限制不同級別的用戶/組,在管理系統資源方面大大地提高了靈活性。
配置文件列參數如下:
<code>/<code>
下面是一個為用戶tony設置軟限制和硬限制的例子:
<code>tony
hard nofile 4096
tony
soft nofile 1024
/<code>
寫在最後
這篇簡短的文章展示了一個基本示例,演示如何配置全侷限制,和用戶級別的限制,從而控制打開文件的最大數量。
上面我們只是說了淺淺的表面知識。我強烈建議你詳細地瞭解/etc/sysctl.conf和/etc/security/limit .conf,並學習如何使用。
總有一天它們會對你有極大幫助的。
Happy coding :)