Linux文件描述符介绍
一、概述
Linux系统中一切皆文件,无论是什么,只要是存在Linux系统中的,他都是一个文件。而进程的作用就是为了处理数据,文件是
保存数据最常见的方法。所以,一般进程都需要打开一些文件,来读取和写入一些数据。但是文件的名称非常复杂,虽然方便我们人
类查看,但是计算机很难识别这个名称,为了让计算机可以快速的识别文件,我们就引入一个非负整数来代替某个文件。这个非负整
数就是文件描述符。所以,总结说,文件描述符就是内核为了高效的管理被打开的文件,所创建的一个非负整数和文件名的索引关系。
这个非负整数范围:0-N,其中0,1,2是特殊文件的文件描述符。0是标准输入,1标准输出,2是错误输出,一般文件的描述符
都是从3开始的。
二、文件描述符限制
一般来说,我们可以创建非常多的文件描述符,直到系统内存被沾满为止,但是生产中是不允许这样的,因为系统内存还有其他的
作用。所以内核会做出想用的控制,避免占用内存空间,一般情况下,不超过系统内存的10%(从系统级别来看)。
限制的种类:
1、系统级别的限制:指系统上所有的进程打开的文件描述符的限制
2、用户级别的限制:指某一个用户下进程打开的文件描述符的限制
三、文件描述符的设置
系统级别:sysctl -a | grep fs.file-max,这个值是由内核自己维护的,最好不要修改他
临时设置:
ulimit -SHn value
永久设置:
即编辑/etc/security/limits.conf文件
格式:
domain type item value
domain:可以设置用户或者组
type:hard和soft两种,-代表两者都设置,soft不能超过hard的值
item:nofile代表最大打开文件数,nproc代表最大进程数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器