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

将 file-max 值替换为 **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 文章中学习更多关于此类命令的知识。继续关注!

更新于: 2019-10-21

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告