在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进行更详细的介绍和阅读,并学习如何使用它们。总有一天他们会对你有很大的帮助。
关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。