网站搜索

如何增加 Linux 中打开文件的数量限制


在 Linux 中,您可以更改打开文件的最大数量。您可以使用ulimit命令修改此数字。它使您能够控制可用于 shell 或由其启动的进程的资源。

另请阅读: 在每个用户级别设置 Linux 运行进程限制

在这个简短的教程中,我们将向您展示如何检查当前打开文件和文件描述的限制,但为此,您需要拥有系统的根访问权限。

首先,让我们看看如何找出 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 服务器。

您可以通过编辑内核指令 fs.file-max 来增加 Linux 中打开文件的限制。为此,您可以使用 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 以及了解如何使用它们。有一天他们会给你很大的帮助。