linux 设置打开文件数

可以使用下面的文件进行设置

/etc/security/limits.d/90-nproc.conf

先来看/etc/security/limits.d/90-nproc.conf 配置文件:

**root@ \~# cat /etc/security/limits.d/90-nproc.conf

Default limit for number of user's processes to prevent

accidental fork bombs.

See rhbz #432903 for reasoning.**

* soft nproc 1024
root soft nproc unlimited
系统其它普通用户最多进程默认是1024个,而root用户是 unlimited(不受限制)

/etc/security/limits.conf 配置文件可限制文件打开数,系统进程等资源,在该文件配置中写的最大用户进程数是受/etc/security/limits.d/90-nproc.conf配置上限影响的。

一般系统普通用户进程数满了都是修改/etc/security/limits.d/90-nproc.conf文件。

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

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

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

root@localhost \~# cat /proc/sys/fs/file-max

180965

一般我们也是可以修改 /etc/security/limits.conf 文件

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

总结

所有进程打开的文件描述符数量不能超过/proc/sys/fs/file-max。

单个进程打开的文件描述符数不能超过user limit中nofile的soft limit。

nofile的soft limit不能超过其hard limit。

注意下面的提示:

修改/etc/security/limits.conf也可以达到目的,但是需要注意两个问题:

1.在配置文件中需要指明用户,如不指明,会有可能导致配置不生效(当两个配置文件都在生效时)。

2.书写有格式要求,* soft nproc 20480中间需要至少2个空格隔开。

注意:如果两个配置文件中都做了限制,以/etc/security/limits.d/90-nproc.conf中最小值为准

相关推荐
啊阿狸不会拉杆5 小时前
《计算机网络-自顶向下方法》5.1 概述 读书笔记
网络·计算机网络·智能路由器
半摆烂日常6 小时前
自建WMS和买成品:三年成本对比
大数据·服务器·数据库·python·深度学习·低代码·numpy
Polevne6 小时前
C# 上位机UDP/TCP连接外部设备
网络·tcp/ip·udp
木井巳6 小时前
【网络原理】TCP/IP 协议栈
网络·网络协议·tcp/ip·udp
++==6 小时前
RPC:grpc的使用与安装、server和client的使用示例、lsb_relese、自定制协议(LVC)+protobuf的RPC调用框架的实现
网络·网络协议·rpc
luj_17686 小时前
虚实交融中的真实人物塑造
c语言·开发语言·网络·经验分享·算法
宋军涛6 小时前
Windows 操作系统【任务计划程序】简单使用
服务器·windows
蒸蒸yyyyzwd6 小时前
cpp 选手秋招学习笔记 day27
服务器·c++·面试·八股
waiting9711186 小时前
Ubuntu 26.04 + Android14安装与编译教程
android·linux·ubuntu
qetfw7 小时前
Debian 部署 phpMyAdmin:Apache、PHP 与 MariaDB 管理界面配置
linux·debian·php·apache