当前位置: 首页 > 编程笔记 >

增加Linux中最大打开文件数

孙明德
2023-03-14
本文向大家介绍增加Linux中最大打开文件数,包括了增加Linux中最大打开文件数的使用技巧和注意事项,需要的朋友参考一下

如果您使用的是Linux,则必须多次遇到“打开文件过多(24)”错误。Linux操作系统提供了一种限制每个用户可以使用的文件数量的方法。本文提供有关如何增加Linux操作系统中打开的文件或文件描述符数量的见解。

ulimit命令可以控制shell或进程,并且需要以root用户身份登录。该的ulimit命令用于设置仅适用于当前会话的文件限制。

使用以下命令显示打开文件描述符的最大数量-

# cat /proc/sys/fs/file-max
801841

在上面的命令中,用户可以在单个登录会话中打开801841文件。要查看文件描述符的硬值和软值,请使用以下命令:

文件描述符的硬值

硬值限制只能由root用户修改。非root用户不能超过硬限制。

我们可以使用以下命令检查硬值–

$ ulimit -Hn
4096

在上面的命令中,“ H”选项表示硬值,“ n”表示文件数。

文件描述符的软值

可以通过用户进程随时修改软值限制。它用于禁用核心转储。

我们可以使用以下命令检查硬值–

$ ulimit -Sn
1024

在以上命令中,“ S”选项表示软值,“ n”表示文件数。

修复“打开文件过多”错误

通过在内核变量/ proc / sys / fs / file-max中设置一个新值,可以增加打开文件的最大数量,如下所示:

$ sysctl -w fs.file-max=100000
fs.file-max = 100000

上面的命令将最大打开文件数限制为100000,这适用于特定会话。如果您想终身使用此值,则需要编辑/etc/sysctl.conf文件并放入以下行–

$ vi /etc/sysctl.conf

样本输出应如下所示–

........
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#fs.file-max = 50000

将文件最大值替换为100000并保存。用户需要注销并再次登录才能使更改生效,或者只需键入以下命令–

$ sysctl -p

要验证它,请使用以下命令–

$ cat /proc/sys/fs/file-max

样本输出应如下所示–

$ cat /proc/sys/fs/file-max
100000

用户级别文件描述符限制

上面的过程描述了系统级文件描述符限制。但是,我们可以设置用户级别的文件描述符限制。要指定用户级别文件描述符限制,可以通过编辑/etc/security/limits.conf文件来实现。

要编辑文件,请使用以下命令–

$ vi /etc/security/limits.conf

样本输出应如下所示–

.....
#*        soft       core       0
#root     hard       core       100000
#*        hard       rss        10000
#@student hard       nproc      20
#@faculty soft       nproc      20
#@faculty hard       nproc      50
#ftp      hard       nproc      0
#ftp      -          chroot     /ftp
#@student -          maxlogins 4

将以下行追加到limits.conf文件中–

#tp    soft    nofile    4096
#tp    hard    nofile    10240

这里TP是系统的用户名。保存并关闭文件。要查看限制,请使用如上所示的ulimits命令。

恭喜你!现在,您知道“如何增加打开的文件或文件描述符的最大数量”。在下一篇Linux文章中,我们将学习有关这些命令类型的更多信息。继续阅读!

 类似资料:
  • 问题内容: 目前显示。我想将其增加到。我已经编辑了“ /etc/sysctl.conf”并放入了。我还编辑和更新了硬值和软值。但是ulimit仍然显示。完成所有这些更改后,我重新启动了笔记本电脑。我可以访问root密码。 在-中添加了以下几行 我还添加了以下内容- 我已经尝试了其他论坛上给出的所有可能方式,但是我可以达到的最大限制,不能超过此上限。可能是什么问题? 我进行此更改是因为引发最大打开文

  • 本文向大家介绍linux的最大打开文件数限制修改方法,包括了linux的最大打开文件数限制修改方法的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于linux最大打开文件数限制修改的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: linux会为每个用户登录系统打开最大文件数都有限制, 这个限制通过 ulimit -n 可以看到, 一般是 1024 .

  • 我必须在一组机器上执行一个进程。集群的大小为100级。所以我不能手动执行进程,我必须通过脚本执行它们(脚本使用ssh,目前我使用python-paramiko)。这些进程打开的tcp套接字数超过1024个(Linux的默认限制)所以我需要使用{ulimit-n 10000}来更改它。这只对该shell会话进行更改。并且该命令仅适用于root用户。所以我的剧本不能做到这一点。我尝试执行这个命令 但这

  • 问题内容: 我用Python打开了一个8 MB的文件,因为我想批量更改各种类型的文件名。我仔细检查并将文件加载到字符串中,然后使用字符串方法replace替换了所有内容。然后我注意到只有一半的文件被替换了。好像Python没有完全打开文件。 我必须在Python的范围内发挥某种字符串大小限制或最大文件大小限制吗? 请参阅Python搜索中的代码并替换未正确替换的代码。 我已更改为建议的代码。缓冲区

  • 问题内容: 是否可以为工作过程增加“最大打开文件数”参数?我的意思是这个参数: 感谢您的建议 问题答案: 作为系统管理员 :在大多数Linux安装中,此文件控制此文件;它允许您设置每个用户的限制。您需要一条像这样的线。 在一个进程内 :getrlimit和setrlimit调用控制大多数每个进程的资源分配限制。控制文件描述符的最大数量。您将需要适当的权限才能调用它。

  • 问题内容: 我正在处理一个大型文本文件(500k行),其格式如下: 我正在使用下面的代码返回每个系列的相关系数,例如S!_A16: 但是,在一些大文件上,这将返回错误: 我了解这与该声明有关,但是如何解决? 编辑 :这与最大行数有关。有谁知道如何容纳更多的行? 问题答案: 错误信息: 说负一个是TypeError。如果查看回溯中的倒数第二行,您会发现唯一的减法是 所以一定是。如果您进入857号线附