如何增加 Linux 中打开文件数限制
在 Linux 中,您可以更改打开文件的最大数量。您可以使用ulimit命令修改此数字。它授予您控制 shell 或由其启动的进程可用资源的能力。
另请参阅: 按用户级别设置 Linux 运行进程限制
在这个简短的教程中,我们将向您展示如何检查当前打开文件和文件描述的限制,但要做到这一点,您需要拥有系统的 root 访问权限。
首先,让我们看看如何找出 Linux 系统上打开的文件描述符的最大数量。
查找Linux打开文件限制
该值存储在:
# cat /proc/sys/fs/file-max 818354
您将看到的数字显示用户每次登录会话可以打开的文件数。结果可能因您的系统而异。
例如,在我的CentOS服务器上,限制设置为818354,而在我家运行的Ubuntu服务器上,默认限制设置为176772。
如果要查看硬限制和软限制,可以使用以下命令:
检查Linux中的硬限制
# ulimit -Hn 4096
检查 Linux 中的软限制
# ulimit -Sn 1024
要查看不同用户的硬值和软值,您只需使用“su”切换到您想要检查限制的用户即可。
例如:
# su marin $ ulimit -Sn 1024
$ ulimit -Hn 4096
如何检查 Linux 中的系统范围文件描述符限制
如果您正在运行服务器,某些应用程序可能需要更高的打开文件描述符限制。MySQL /MariaDB服务或Apache Web 服务器就是一个很好的例子。
您可以通过编辑内核指令来增加 Linux 中打开文件的限制 fs.file-max
。为此,您可以使用sysctl实用程序。
Sysctl用于在运行时配置内核参数。
例如,要将打开文件限制增加到 500000,您可以以 root 身份使用以下命令:
# sysctl -w fs.file-max=500000
您可以使用以下命令检查打开的文件的当前值:
$ cat /proc/sys/fs/file-max
使用上述命令,您所做的更改将仅在下次重新启动之前保持有效。 如果您希望永久应用它们,则必须编辑以下文件:
# vi /etc/sysctl.conf
添加以下行:
fs.file-max=500000
当然,您可以根据需要更改数字。要再次验证更改,请使用:
# cat /proc/sys/fs/file-max
用户需要注销并重新登录才能使更改生效。如果您想立即应用限制,可以使用以下命令:
# sysctl -p
在 Linux 中设置用户级别打开文件限制
上述示例展示了如何设置全局限制,但您可能希望按用户应用限制。为此,作为 root 用户,您需要编辑以下文件:
# vi /etc/security/limits.conf
如果您是 Linux 管理员,我建议您熟悉该文件以及您可以对它执行的操作。请阅读其中的所有注释,因为它通过限制不同级别的用户/组,在管理系统资源方面提供了极大的灵活性。
您应该添加的行采用以下参数:
<domain> <type> <item> <value>
以下是为用户marin设置软限制和硬限制的示例:
## Example hard limit for max opened files marin hard nofile 4096 ## Example soft limit for max opened files marin soft nofile 1024
最后的想法
这篇简短的文章向您展示了一个基本示例,说明如何检查和配置全局和用户级别的最大打开文件数限制。
虽然我们只是触及了皮毛,但我强烈建议您更详细地了解和阅读有关/etc/sysctl.conf和/etc/security/limits.conf的内容,并学习如何使用它们。它们总有一天会对你有很大的帮助。