linux如何修改打开文件数,Linux中更改打开文件限制数目(Open File Limit)的3种方法...

操作系统在打开文件时会临时分配一个叫文件句柄(file handle)来进行访问,为文件句柄保留一个特殊内存区域,该区域的大小决定了可以同时打开多少个文件,限制了shell可以同时打开的文件句柄的数量。在本文中,我将向你展示不同的方法,更改Linux中打开文件限制的数量。

为何限制打开文件的数目

因为操作系统需要内存来管理每个文件,所以要对可以打开的文件数进行限制。

在Linux下,有两种限制:软限制是指时候都可以更改的值,

硬限制:设置软限制不能超过的最大值

可以在Linux系统上看到打开的文件描述符的最大数量,如下所示:# cat /proc/sys/fs/file-max

100576

这个值显示用户每次登录会话可以打开的文件数,但是要注意,根据你的系统,结果可能不同。

1)ulimit命令

ulimit命令可用于增加在shell中打开的文件数量,此命令是bash命令,因此它仅影响bash和从它启动的程序。ulimit语法如下所示:ulimit [options [limit]]

你可以看到下面的一些选项-a (当前设置):ulimit报告它当前设置,

-f (文件限制)限制由shell创建的文件的数量

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

-H和-S (硬和软限制)选项修改其他选项,设置分别为硬限制或软限制,如果没有提供选项,那么ulimit为指定的特性设置硬限制和软限制,

因此,要查看当前的限制,你可以如下所示:$ ulimit -a | grep open

open files (-n) 1024

你可以检查下面的硬限制:$ ulimit -Hn

4096

下面是软限制:$ ulimit -Sn

1024

可以按以下方式编辑限制$ ulimit -n 3000

可以在下面检查:$ ulimit -n

3000

现在问题是,如果你注销,并且登录或重新启动计算机,则值将重置。请记住,要让这些更改永久生效,需要编辑用户文件(.bashrc或.profile )或系统级配置文件(/etc/bashrc或/etc/profile )配置,# vim .bash_profile

ulimit -n 3000

现在即使重新启动,用户设置的更改已经永久生效了。

2)可插拔认证模块(PAM )模块

最好通过一个名为pam_limits的可插入身份验证模块(PAM)模块来更改此类限制。大多数主要Linux发行版都使用这个模块作为标准PAM配置的一部分,因此它已经存在于一些Linux系统上,但是你需要通过编辑/etc/security/limits.conf文件来配置,domain:描述限制所适用的实体。它可以是一个用户名,一个组名(使用@groupname)或Asterisk (* ))通配符,匹配每个人,

type:此字段为硬或软限制,

item :它指定要限制的项的类型,

value:它指定应用于限制的值

你可以看到如下文件的内容:# tail -f -n 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

编辑用户打开的文件的最大数量,例如,在文件末尾添加以下几行:# vim /etc/security/limits.conf

* hard nofile 20000

* soft nofile 15000

然后,你需要编辑文件/etc/pam.d/login# vim /etc/pam.d/login

session required pam_limits.so

然后保存文件。你可以检查结果:$ ulimit -Hn

20000

3)系统范围限制

你可以通过编辑/etc/sysctl.conf或编辑指令fs.file-max来增加Linux中打开文件的限制

你可以使用以下命令查看打开的文件的当前值# cat /proc/sys/fs/file-max

100576

你可以按如下所示编辑默认值:# sysctl -w fs.file-max=250000

fs.file-max = 250000

你可以按以下方式检查结果# cat /proc/sys/fs/file-max

250000

通过使用sysctl命令,修改将一直应用到下一次重新引导。要使配置永久化,你可以直接编辑/etc/sysctl.conf文件,如下所示:# vim /etc/sysctl.conf

fs.file-max=250000

如果列出/proc/sys/fs/file-max的内容,你将看到更改并没有直接生效,现在你需要使用sysctl命令的-p选项直接应用更改,如下所示:# sysctl -p

fs.file-max = 250000

现在配置永久生效了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值