?在Linux中,您可以更改打開文件的最大數量。您可以使用ulimit命令修改此數字。它授予您控制shell啟動的資源或由其啟動的進程的能力。
另請參閱:?按用戶級別設置Linux運行進程限制
在這個簡短的教程中,我們將向您展示如何檢查打開文件和文件描述的當前限制,但為此,您需要具有對系統的root訪問權限。
首先,讓我們看看我們如何找到Linux系統上打開的文件描述符的最大數量。
查找Linux打開文件限制
該值存儲在:
[root@localhost ~]# cat /proc/sys/fs/file-max?
483438
您將看到的數字顯示用戶每次登錄會話可以打開的文件數。結果可能會因系統而異。
例如,在我的CentOS服務器上,限制設置為483438,而在我在家運行的Ubuntu服務器上,默認限制設置為176772。
如果要查看硬限制和軟限制,可以使用以下命令:
檢查Linux中的硬限制
[root@localhost ~]# ulimit -Hn
65536
檢查Linux中的軟限制
[root@localhost ~]# ulimit -Sn
65536
要查看不同用戶的硬值和軟值,您只需將用戶“su”切換到限制您要檢查的用戶即可。
例如:
[root@localhost ~]# su - smgadmin
上一次登錄:五 7月 26 22:21:47 CST 2019pts/0 上
[smgadmin@localhost ~]$ ulimit -Sn
65536
[smgadmin@localhost ~]$ ulimit -Hn
65536
096
如何在Linux中檢查系統范圍的文件描述符限制
如果您正在運行服務器,則某些應用程序可能需要更高的打開文件描述符限制。一個很好的例子是MySQL / MariaDB服務或Apache?Web服務器。
您可以通過編輯內核指令來增加Linux中打開文件的限制??fs.file-max。為此,您可以使用sysctl實用程序。
Sysctl用于在運行時配置內核參數。
例如,要將打開文件限制增加到??500000,可以以root身份使用以下命令:
[root@localhost ~]# sysctl -w fs.file-max=500000
fs.file-max = 500000
您可以使用以下命令檢查已打開文件的當前值:
[root@localhost ~]# cat /proc/sys/fs/file-max?
500000
使用上述命令,您所做的更改將僅在下次重新引導之前保持活動狀態。如果您希望永久應用它們,則必須編輯以下文件:
[root@localhost ~]# vi /etc/sysctl.conf
添加以下行:
fs.file-MAX = 500000
當然,您可以根據需要更改數量。要再次驗證更改,請使用:
cat /proc/sys/fs/file-max
用戶需要注銷并再次登錄才能使更改生效。如果要立即應用限制,可以使用以下命令:
sysctl -p
在Linux中設置用戶級別打開文件限制
上面的示例顯示了如何設置全局限制,但您可能希望對每個用戶應用限制。為此,作為root用戶,您需要編輯以下文件:
[root@localhost ~]# vi /etc/security/limits.conf
如果您是Linux管理員,我建議您熟悉該文件以及您可以對其執行的操作。閱讀其中的所有注釋,因為它通過限制不同級別的用戶/組來提供管理系統資源方面的極大靈活性。
您應添加的行采用以下參數:
<domain> <type> <item> <value>
以下是為用戶smgadmin設置軟硬限制的示例:
##最大打開文件的硬限制示例
* hard nofile 65536
##最大打開文件的軟限制示例
* soft nofile 65536
最后的想法
這篇簡短的文章向您展示了如何檢查和配置最大打開文件數的全局和用戶級別限制的基本示例。
雖然我們只是略微表面,但我強烈建議您對/etc/sysctl.conf和/etc/security/limits.conf進行更詳細的介紹和閱讀,并學習如何使用它們??傆幸惶焖麄儠δ阌泻艽蟮膸椭?。
關于運維學習、分享、交流,筆者開通了微信公眾號【運維貓】,感興趣的朋友可以關注下,歡迎加入,建立屬于我們自己的小圈子,一起學運維知識。