在Linux中如何修改打开文件数量限制

68次阅读
没有评论

共计 2771 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要为大家展示了“在 Linux 中如何修改打开文件数量限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“在 Linux 中如何修改打开文件数量限制”这篇文章吧。

Linux 上的进程受到许多限制,这些限制也阻碍它们正确地执行,而且每个进程都有几个与之相关的限制。shell 限制程序可以同时打开的文件句柄的数量。

系统环境

Centos7

为什么要限制打开文件的数量?

因为操作系统需要内存来管理每个文件,所以可以打开的文件数可能会受到限制。由于程序也可以关闭文件处理程序,它可以创建任意大小的文件,直到所有可用磁盘空间都已满为止。在这种情况下,安全性的一个方面是通过施加限制来防止资源耗尽。

可以看到 Linux 系统中打开的文件描述符的最大数量,如下所示:

[root@localhost ~]# cat /proc/sys/fs/file-max 180965

以上代码可复制粘贴,可往左滑

该值显示用户每次登录会话可以打开的文件数,你会注意到,结果可能会因系统而异。出于某些原因,可能需要增加限制集的值。这就是为什么 Linux 系统提供了修改这些限制的可能性(增加或减少),方法是更改每个进程和每个系统打开文件数的最大值。

方法一:使用 ulimit 命令

ulimit 命令可用来增加在 shell 中打开文件的数量。这个命令是系统内置命令,因此它只影响 bash 和从它启动的程序。ulimit 语法如下:

ulimit [选项] [限制数值]

以上代码可复制粘贴,可往左滑

下面选项决定了什么是有限的:

 -a 显示当前所有限制的报告

 -f (文件限制)限制 shell 能创建文件的大小

 -n 限制打开的文件描述符的数量。

 - H 和 -S 它们分别被设置为硬限制和软限制。硬限制可能不会随之增加,但软限制可能会增加。如果没有提供任何选项,ulimit 将同时设置硬限制和软限制。

查看当前打开文件的软限制,可以使用下面命令:

[root@localhost ~]# ulimit -a |grep open open files (-n) 1024  或者  [root@localhost ~]# ulimit -n 1024

以上代码可复制粘贴,可往左滑

如果需要查看硬限制,适应下面命令:

[root@localhost ~]# ulimit -Hn 4096

以上代码可复制粘贴,可往左滑

下面修改打开文件的数量:

[root@localhost ~]# ulimit -n 2048

以上代码可复制粘贴,可往左滑

然后来查看一下:

[root@localhost ~]# ulimit -Hn 2048 [root@localhost ~]# ulimit -Sn 2048

以上代码可复制粘贴,可往左滑

发现,设置 ulimit 值的时候,没有指定 - H 或者 -S,两个限制都会设定相同的值。

现在的问题是,如果退出登录或者重新启动计算机,该值将被重置。请记住,要使生效,需要编辑用户的.bashrc 或者.bash_profile 配置文件,通过将 ulimit 命令行添加到文件的末尾,可以使参数生效。

[root@localhost ~]# echo  ulimit -n 2048    ~/.bashrc

以上代码可复制粘贴,可往左滑

方法二:使用 PAM 模块

最好通过名为 pam_limits 的 PAM 模块实现这种限制。需要通过编辑 /etc/security/limits.conf 文件来配置它。这个文件包含四个基本字段:

domain: 描述了在哪些实体中应用限制。它可以是 user、group(组名前面加 @表示组)或匹配所有用户, 使用 (*) 通配符。通配符不适应与 root 用户。

type: 这里表示限制为硬限制还是软限制?硬限制是由系统管理员添加的,在任何情况下都不能超过,而用户可以临时超过软限制。还可以使用破折号 - 来表示一个限制是硬的和软的。请注意,软限制可以增加到硬限制的值

type: 它指定被限制条目的类型。可以是 core(限制核心文件大小(KB)),data(最大数据大小(KB)),fsize(最大文件大小(KB)),nofile(打开的文件描述符的最大数目),nproc(最大进程数),等类型。更多类型可以使用 man limits.conf 查看。

type: 这里使填写应用限制的数值。

下面实例可以对照了解一下。

[root@localhost ~]# tail -12 /etc/security/limits.conf # # #* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 # End of file

以上代码可复制粘贴,可往左滑

要编辑所有用户打开文件的最大数量,可以在文件末尾添加以下行:

[root@localhost ~]# vim /etc/security/limits.conf * hard nofile 20000 * soft nofile 15000

以上代码可复制粘贴,可往左滑

之后,需要编辑文件 /etc/pam.d/login 配置文件,在最后添加以下一条内容:

[root@localhost ~]# vim /etc/pam.d/login session required pam_limits.so

以上代码可复制粘贴,可往左滑

保存文件。然后退出登录,或者重启系统。可以看到软限制和硬限制的值都修改成功了:

[root@localhost ~]# ulimit -Sn 15000 [root@localhost ~]# ulimit -Hn 20000

方法三:

查看系统最大打开文件描述符数量:

[root@localhost ~]# cat /proc/sys/fs/file-max 180965

临时设置该值:

[root@localhost ~]# echo  1000000    /proc/sys/fs/file-max

永久性设置,需要在 /etc/sysctl.conf 中设置,并让它生效:

[root@localhost ~]# echo  fs.file-max = 1000000    /etc/sysctl.conf [root@localhost ~]# sysctl -p fs.file-max = 1000000

以上是“在 Linux 中如何修改打开文件数量限制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2771字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)