文件描述符(File Descriptor)简介
创作时间:
作者:
@小白创作中心
文件描述符(File Descriptor)简介
引用
1
来源
1.
https://juejin.cn/post/7369761632274841610
文件描述符(File Descriptor)是Linux系统中用于标识打开文件的关键概念。本文将详细介绍文件描述符的基本概念、它在进程和文件之间的关系,以及如何检查和管理文件描述符的使用情况。
一、文件描述符概念
Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符。文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
二、文件描述符、文件、进程间的关系
1.描述:
- 每个文件描述符会与一个打开的文件相对应
- 不同的文件描述符也可能指向同一个文件
- 相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开
2.系统为维护文件描述符,建立了三个表
- 进程级的文件描述符表
- 系统级的文件描述符表
- 文件系统的i-node表 (转到:阮一峰——理解inode)
3.通过这三个表,认识文件描述符
- 在进程A中,文件描述符1和30都指向了同一个打开的文件句柄(#23),这可能是该进程多次对执行打开操作
- 进程A中的文件描述符2和进程B的文件描述符2都指向了同一个打开的文件句柄(#73),这种情况有几种可能,1.进程A和进程B可能是父子进程关系;2.进程A和进程B打开了同一个文件,且文件描述符相同(低概率事件=_=);3.A、B中某个进程通过UNIX域套接字将一个打开的文件描述符传递给另一个进程。
- 进程A的描述符0和进程B的描述符3分别指向不同的打开文件句柄,但这些句柄均指向i-node表的相同条目(#1936),换言之,指向同一个文件。发生这种情况是因为每个进程各自对同一个文件发起了打开请求。同一个进程两次打开同一个文件,也会发生类似情况。
三、文件描述符限制
有资源的地方就有战争,“文件描述符”也是一种资源,系统中的每个进程都需要有“文件描述符”才能进行改变世界的宏图霸业。世界需要秩序,于是就有了“文件描述符限制”的规定。
如下表:
永久修改用户级限制时有三种设置类型:
- soft 指的是当前系统生效的设置值
- hard 指的是系统中所能设定的最大值
- 指的是同时设置了 soft 和 hard 的值
四、检查某个进程的文件描述符相关内容
步骤(以nginx为例,*注意权限问题,此示例是在本地环境):
找到需要检查的进程id
如图,找到的进程id为 1367
查看该进程的限制
如图,在 Max open files 那一行,可以看到当前设置中最大文件描述符的数量为1024
查看该进程占用了多少个文件描述符
如图所示,使用了17个文件描述符
总结
实际应用过程中,如果出现“Too many open files” , 可以通过增大进程可用的文件描述符数量来解决,但往往故事不会这样结束,很多时候,并不是因为进程可用的文件描述符过少,而是因为程序bug,打开了大量的文件连接(web连接也会占用文件描述符)而没有释放。程序申请的资源在用完后及时释放,才是解决“Too many open files”的根本之道。
热门推荐
20周胎儿脑细胞发育高峰期与DHA的重要性分析
没有按时吃药或者忘记吃的药,到底要不要补上?
《宝可梦朱紫》大量出现机制详解
肾好不好,看尿就知道?晚上尿尿出现这种情况,或是4种疾病信号
WTT改革裁判罚款规定引争议,公正性成关键
紫砂壶修复粘合剂有毒吗?使用注意事项全解析
如何在对话中保持尊重?非暴力沟通的4个核心法则
如何有效统计工作量?统计工作量要统计什么内容详解
IP地址的分配与路由选择详解
土木工程师具体工作内容包括哪些
不安全行为有哪些类型?如何预防不安全行为?不安全行为的危害与案例分析
我国学者突破技术“瓶颈” 科学高效生态修复红树林
近期市场不确定性较高 黄金ETF规模激增
腿长从哪里开始量?模特界测腿长的正确方法及实用技巧
场外衍生品的风险有哪些?这些风险如何进行有效的管理?
如何分析黄金交易市场的特点?这种特点如何影响交易决策?
jenny mod模组手机版
探秘985大学特殊班级:除了武汉大学的“雷军班”,还有哪些班?
五峰毛尖与芽茶的品质对比:一次深度解析
韩信墓前十字对联:生死一知己,存亡两妇人
金证ESG解读:2024年A股可持续发展信息披露新规发布
如何在WPS中使用Markdown进行文档创作
芦荟怎么养活(家养芦荟的正确方法)
莫小贝,不完美才是常态
限行限号 杭州, 如何灵活应对交通政策?
后背凉是怎么回事
EB-5签证计划综合指南:从投资要求到申请流程详解
喝水后出现4种异常,或是肾脏在“求救”
开放平台:引领未来技术发展的关键
如何高效修改SCI论文