📜  如何更改 Linux 中打开文件的数量限制?

📅  最后修改于: 2021-10-28 02:54:34             🧑  作者: Mango

如果您是一个活跃的 Linux 用户,必须同时在 Linux 上处理许多文件,那么您肯定会遇到 Linux 系统上“打开的文件太多”的问题。当您达到最大打开文件限制时,您将收到一条错误消息,在屏幕上显示“打开的文件太多 (24)”错误。

我们为什么要面对这样的事情?嗯,Linux操作系统设置了一个用户一次可以打开的“打开文件”的限制,Linux操作系统就是用这种方式来限制用户一次打开太多文件的。

但幸运的是,我们可以使用我们今天将在本文中讨论的一些不同方法,根据我们的意愿修改 Linux 中打开文件限制的数量。

打开文件类型限制

为什么 Linux 限制打开文件的数量?原因首先是出于安全目的,因此在 Linux 服务器崩溃之前,没有软件会无休止地创建文件,而且 Linux 操作系统需要内存来管理每个打开的文件,而内存是有限的,尤其是在嵌入式系统上,因此有一些限制用户在系统中打开的多个文件。

打开文件Limit有2种类型,分别如下:

  • 文件描述符的硬值。
  • 文件描述符的软值。

文件描述符的硬值:硬值限制是那些只能由 root 用户修改的文件限制。非 root 用户无法更改硬限制的值。

我们可以使用以下命令检查硬值限制:-

$ ulimit -Hn

Linux中改变打开文件数限制的方法

文件描述符的软值:软值限制是那些显示用户当前有效值的限制,用户进程可以随时修改这些值。可以通过软值禁用核心转储。

我们可以使用以下命令检查软值限制:-

$ ulimit -Sn

Linux中改变打开文件数限制的方法

Linux中改变打开文件数限制的方法

1 ulimit 命令:

ulimit 是 bash 内置的 shell 命令(因此您可能无法在其他类型的 shell 上从它获得理想的结果),它可用于增加 Linux shell 中每个进程的打开文件描述符限制的数量。

a.) -a (Current Settings Passing):-导致 ulimit 显示其当前设置的参数

Linux中改变打开文件数限制的方法

要显示当前限制,请使用以下命令:

ulimit -a | grep open

Linux中改变打开文件数限制的方法

b.) -f(文件限制):参数限制了 shell 可以创建的文件的大小。

c.) -H 和 -S(硬和软限制)已在上面讨论过

现在要编辑限制,请使用以下命令:-

ulimit -n 3000 

Linux中改变打开文件数限制的方法

但是如果您重新启动计算机或注销用户,此值将被重置。

要永久更改该值,我们必须通过在末尾添加以下命令来编辑用户的配置文件(.bashrc 或 .profile)或系统范围的配置文件(/etc/bashrc 或 /etc/profile)之一文件:-

现在更改是永久性的,即使您重新启动计算机,它也不会更改。

2) 可插拔认证模块 (PAM) 模块

另一种修改打开文件限制的最佳方法是通过名为pam_limits 的PAM 模块完成。我们必须通过编辑/etc/security/limits.conf 文件来配置它。

此配置文件中有 4 个基本字段。他们是:-

  1. domain :域描述了限制适用的特定单元,可以是用户名、组名(采用 @groupname 语法形式)或星号 ( * ) 通配符(通配符限制不适用于 root)。
  2. type : Type 指定限制是硬限制还是软限制。
  3. item :它指定被限制的项目类型。这可能是核心(限制核心文件的大小)、fsize(最大文件大小)、数据(最大数据大小)、大小等。
  4. value : 将应用于限制的值。

Linux中改变打开文件数限制的方法

现在您可以编辑此配置文件以更改所有用户打开文件的限制,例如,您可以在文件行的末尾添加以下行:

现在编辑文件 /etc/pam.d/login

您已完成更改打开文件限制。