前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux:谁能打开多少个文件,可以精准控制!只需这行配置。

Linux:谁能打开多少个文件,可以精准控制!只需这行配置。

作者头像
程序员小助手
发布2020-04-26 13:55:10
7660
发布2020-04-26 13:55:10
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

在Linux中,可以更改打开文件的最大数量。使用ulimit命令修改这个限制值,从而控制文件资源的访问阈值。

在本文中,我们将展示如何检查当前打开的文件和文件描述的限制,但有个前提,你得有root权限。root用户本身,或者sudoer组成员。

首先,让我们看看如何找出Linux系统上打开的文件描述符的最大数量。

查找Linux打开文件限制

该值存储在下面的文件内

可以看到,该数值显示了用户在每个登录会话中可以打开的文件数量。根据不同的系统,结果可能会有所不同。

例如,在有的CentOS服务器上,限制设置为818354,而在有的Ubuntu服务器上,默认限制设置为176772。

如果你想看到硬和软的限制,可以使用以下命令:

查看硬限制

代码语言:javascript
复制
ulimit -Hn

查看软限制

代码语言:javascript
复制
ulimit -Sn

想要查看其它用户的限制措施,可以使用 su 指令切换过去,再执行 ulimit 查看。

如何在Linux中检查系统范围的文件描述符限制

如果服务器正在运行,但是一些应用程序可能需要对打开的文件描述符数量调高。比如,运行中的MySQL/MariaDB服务,或Apache web服务器就是一个很好的例子。

那么可以通过编辑内核指令fs.file-max来增加Linux中打开文件的限制。为此,我们需要使用sysctl程序。

sysctl用于在运行状态中配置内核参数。

例如,要将打开文件的限制增加到500000,可以使用root执行以下命令:

代码语言:javascript
复制
sysctl -w fs.file-max=500000

然后使用以下命令检查其当前值:

代码语言:javascript
复制
cat /proc/sys/fs/file-max

使用上述命令,你所做的更改将仅在下一次重新启动之前保持。如果你想永久有效,则必须编辑以下文件:

代码语言:javascript
复制
vi /etc/sysctl.conf

追加如下行:

代码语言:javascript
复制
fs.file-max=500000

当然,也可以根据需要更改数值。要再次验证更改是否生效,请使用:

代码语言:javascript
复制
cat /proc/sys/fs/file-max

用户需要注销并再次登录才能使更改生效。如果想立即使限制起作用,运行以下命令:

代码语言:javascript
复制
sysctl -p

Linux中根据用户级别设置限制

上面的示例演示了如何设置全局限制,但是你可能希望对每个用户应用限制。你需要root身份编辑以下文件:

代码语言:javascript
复制
vi /etc/security/limits.conf

如果是一名Linux管理员,需要对该文件烂熟于胸。网上也有很多示例,介绍了通过限制不同级别的用户/组,在管理系统资源方面大大地提高了灵活性。

配置文件列参数如下:

代码语言:javascript
复制
<domain>        <type>  <item>  <value>

下面是一个为用户tony设置软限制和硬限制的例子:

代码语言:javascript
复制
tony        hard nofile 4096
tony        soft nofile 1024

写在最后

这篇简短的文章展示了一个基本示例,演示如何配置全局限制,和用户级别的限制,从而控制打开文件的最大数量。

上面我们只是说了浅浅的表面知识。我强烈建议你详细地了解/etc/sysctl.conf和/etc/security/limit .conf,并学习如何使用。

总有一天它们会对你有极大帮助的。

Happy coding :)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 查找Linux打开文件限制
  • 如何在Linux中检查系统范围的文件描述符限制
  • Linux中根据用户级别设置限制
  • 写在最后
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档