如果您是一个活跃的 Linux 用户,必须同时在 Linux 上处理许多文件,那么您肯定会遇到 Linux 系统上“打开的文件太多”的问题。当您达到最大打开文件限制时,您将收到一条错误消息,在屏幕上显示“打开的文件太多 (24)”错误。
我们为什么要面对这样的事情?嗯,Linux操作系统设置了一个用户一次可以打开的“打开文件”的限制,Linux操作系统就是用这种方式来限制用户一次打开太多文件的。
但幸运的是,我们可以使用我们今天将在本文中讨论的一些不同方法,根据我们的意愿修改 Linux 中打开文件限制的数量。
打开文件类型限制
为什么 Linux 限制打开文件的数量?原因首先是出于安全目的,因此在 Linux 服务器崩溃之前,没有软件会无休止地创建文件,而且 Linux 操作系统需要内存来管理每个打开的文件,而内存是有限的,尤其是在嵌入式系统上,因此有一些限制用户在系统中打开的多个文件。
打开文件Limit有2种类型,分别如下:
- 文件描述符的硬值。
- 文件描述符的软值。
文件描述符的硬值:硬值限制是那些只能由 root 用户修改的文件限制。非 root 用户无法更改硬限制的值。
我们可以使用以下命令检查硬值限制:-
$ ulimit -Hn
文件描述符的软值:软值限制是那些显示用户当前有效值的限制,用户进程可以随时修改这些值。可以通过软值禁用核心转储。
我们可以使用以下命令检查软值限制:-
$ ulimit -Sn
Linux中改变打开文件数限制的方法
1 ulimit 命令:
ulimit 是 bash 内置的 shell 命令(因此您可能无法在其他类型的 shell 上从它获得理想的结果),它可用于增加 Linux shell 中每个进程的打开文件描述符限制的数量。
Syntax : ulimit [options [limit]]
a.) -a (Current Settings Passing):-导致 ulimit 显示其当前设置的参数
要显示当前限制,请使用以下命令:
ulimit -a | grep open
b.) -f(文件限制):参数限制了 shell 可以创建的文件的大小。
c.) -H 和 -S(硬和软限制)已在上面讨论过
现在要编辑限制,请使用以下命令:-
ulimit -n 3000
但是如果您重新启动计算机或注销用户,此值将被重置。
要永久更改该值,我们必须通过在末尾添加以下命令来编辑用户的配置文件(.bashrc 或 .profile)或系统范围的配置文件(/etc/bashrc 或 /etc/profile)之一文件:-
# vim .bash_profile
ulimit -n 3000
现在更改是永久性的,即使您重新启动计算机,它也不会更改。
2) 可插拔认证模块 (PAM) 模块
另一种修改打开文件限制的最佳方法是通过名为pam_limits 的PAM 模块完成。我们必须通过编辑/etc/security/limits.conf 文件来配置它。
此配置文件中有 4 个基本字段。他们是:-
- domain :域描述了限制适用的特定单元,可以是用户名、组名(采用 @groupname 语法形式)或星号 ( * ) 通配符(通配符限制不适用于 root)。
- type : Type 指定限制是硬限制还是软限制。
- item :它指定被限制的项目类型。这可能是核心(限制核心文件的大小)、fsize(最大文件大小)、数据(最大数据大小)、大小等。
- value : 将应用于限制的值。
现在您可以编辑此配置文件以更改所有用户打开文件的限制,例如,您可以在文件行的末尾添加以下行:
# vim /etc/security/limits.conf
* hard nofile 21000
* soft nofile 16000
现在编辑文件 /etc/pam.d/login
# vim /etc/pam.d/login
session required pam_limits.so
您已完成更改打开文件限制。