1、概述:

  文件描述符是内核为了高效管理已被打开的文件所创建的索引。是一个非负整数,用于代指被打开的文件。所有通过I/O操作的系统调用都通过文件描述符。

  文件描述符用以表明每一个被进程所打开的文件和socket

2、文件描述符的限制:

  Linux下最大文件描述符的限制有两个:

    (1) 系统级限制:sysctl命令和proc文件系统中查看到的数值是一样的,这属于系统限制,它是限制所有用户打开文件描述符的总和

    (2) 用户级限制:ulimit命令看到的是用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用的文件描述符总数不得超过这个限制。

3、修改文件描述符:

  (1)修改用户级文件描述符

    临时修改:ulimit -SHn 10240  重启失效

      [root@super ~]# ulimit -SHn 10240

      [root@super ~]# ulimit -n
      10240
    永久修改:修改 /etc/security/limits.conf  在末尾添加如下:

      test             soft    nofile          10240
      test             hard    nofile          20480

    修改完生效

    上面设置的意思是:test用户文件描述符达到10240个的时候,触发告警。
                                 test用户文件描述符达到20480个的时候,达到最高上限。

  (2)修改系统级文件描述符

    临时修改:sysctl fs.file-max=40000 或 echo 40000 > /proc/sys/fs/file-max

    [root@super ~]# sysctl fs.file-max=40000

    [root@super ~]# sysctl -a | grep fs.file-max
    fs.file-max = 40000

    

    永久生效:echo "fs.file-max=40000" >> /etc/sysctl.conf  使用 sysctl -p 修改生效,不用重启

    [root@super ~]# echo "fs.file-max=50000" >> /etc/sysctl.conf

    [root@super ~]# sysctl -p

    [root@super ~]# sysctl -a | grep fs.file-max --color
    fs.file-max = 50000

  当服务器运行,Apache、squid、Mysql、Oracle时,都需要对其进行优化调整。

[ 总结 ] Linux 下文件描述符的更多相关文章

  1. Linux下文件描述符

    http://blog.csdn.net/kumu_linux/article/details/7877770 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的 ...

  2. linux下文件描述符的介绍

    当某个程序打开文件时,操作系统返回相应的文件描述符,程序为了处理该文件必须引用此描述符.所谓的文件描述符是一个低级的正整数.最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出( ...

  3. linux下文件描述符的查看及分析

    起因 近期在调试一个Android播放内核是遇到上层传递的是fd(file descriptor),但是在文件播放结束之后调用lseek却提示返回-1,errno=29(#define ESPIPE ...

  4. Linux中文件描述符fd和文件指针flip的理解

    转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...

  5. linux 最大文件描述符fd

    使用四种框架分别实现百万websocket常连接的服务器 著名的 C10K 问题提出的时候, 正是 2001 年.这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务 ...

  6. [转载] linux中文件描述符fd和文件指针flip的理解

    转载自http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...

  7. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

  8. 【详解】Linux的文件描述符fd与文件指针FILE*互相转换

    使用系统调用的时候用文件描述符(file descriptor,简称fd)的时候比较多,但是操作比较原始.C库函数在I/O上提供了一些方便的包装(比如格式化I/O.重定向),但是对细节的控制不够. 如 ...

  9. Linux的文件描述符

    (1).文件描述符的定义 文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符:文件描述符是一个简单的非负整数,用以表明每个被进程 ...

随机推荐

  1. LeetCode 23 ——合并 K 个排序链表

    1. 题目 2. 解答 2.1. 方法一 在 合并两个有序链表 的基础上,我们很容易想到第一种解法,首先我们将第一个链表和第二个链表合并成一个新的链表,然后再往后依次合并接下来的每个链表即可. 假设每 ...

  2. Java串口编程学习1-环境配置(64位Win7)

    最近在做zigbee的课程设计,需要Java实现对串口数据的读写操作. 网上找了很多代码,好像都比较过时了,直接拿来用没法跑通……QAQ……然后自己写个教程留底,如有不当之处还请各位路过的大神赐教. ...

  3. Java判断数字的奇偶

    package anli; import java.util.Scanner; public class jiou { public static void main(String[] args){ ...

  4. Python不同进制之间的转换

    不同的进制 二进制    0b101 以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛出SyntaxError异常 八进制    0711 以数字0打头的数字表示八进制数 如果出现大于 ...

  5. Jboss6内存修改

    1.启动脚本:/home/jboss/jboss-eap-6.2/bin/standalone.sh -Djboss.bind.address.management=192.168.0.62 -Djb ...

  6. WCF 透明代理

    现在我们通过类似的原理创建一个用于模拟WCF服务端和客户端工作原理的模拟程序.[源代码从这里下载] 目录 一.基本的组件和执行流程 二.创建自定义HttpHandler实现对服务调用请求的处理 三.定 ...

  7. 一道ioccc题目

    国际C语言混乱大赛的一个题: main() {printf(&unix["\021%six\012\0"],(unix)["have"]+"f ...

  8. 多线程 定时器 Timer TimerTask

    定时器是一种特殊的多线程,使用Timer来安排一次或者重复执行某个任务 package org.zln.thread; import java.util.Date; import java.util. ...

  9. BZOJ4423 AMPPZ2013Bytehattan(并查集)

    判断网格图中某两点是否被割开,可以将割边视为边区域视为点,转化为可切割这两点的区域是否连通.于是每次判断使两个区域连通后是否会形成环(边界视为连通),若是则说明被两点被割开.并查集维护. #inclu ...

  10. [NOI2016 D2T1]区间

    题目大意:在数轴上有$n$个闭区间$[l_1,r_1],[l_2,r_2],...,[l_n,r_n]$.现在要从中选出 $m$ 个区间,使得这 $m$ 个区间共同包含至少一个位置.输出被选中的最长区 ...