Linux世界不會讓你瞎溜達,一行配置,精細控制你能開多少個文件

引言

在Linux中,可以更改打開文件的最大數量。使用ulimit命令修改這個限制值,從而控制文件資源的訪問閾值。

在本文中,我們將展示如何檢查當前打開的文件和文件描述的限制,但有個前提,你得有root權限。root用戶本身,或者sudoer組成員。

首先,讓我們看看如何找出Linux系統上打開的文件描述符的最大數量。

Linux世界不會讓你瞎溜達,一行配置,精細控制你能開多少個文件

查找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 :)


分享到:


相關文章: