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代表最大进程数

  

    

原文地址:https://www.cnblogs.com/myeric/p/8809355.html