Linux下最大文件描述符设置

by:授客 QQ1033553122

1.   系统可打开最大文件描述符设置

查看系统可打开最大文件描述符

# cat /proc/sys/fs/file-max

65535

说明:

所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max

查看当前系统使用的打开文件描述符数

# cat /proc/sys/fs/file-nr

1280    0 0 113986

说明:第一个数表示当前系统已分配的文件描述符数(文件句柄数),第二个数为分配后已释放的文件描述符数(当前不再使用的文件描述符数),第三个数为最大文件描述符数,等于file-max。

配置可打开最大文件描述符

a) 永久配置

# vim /etc/sysctl.conf

在文件尾添加如下内容(假设目标大小为65535):

fs.file-max=65535

确保配置立即生效,执行以下命令

# sysctl -p

b) 临时配置

# echo 65530 > /proc/sys/fs/file-max

# sysctl fs.file-max  #查看

fs.file-max = 65530

或者

# sysctl -w fs.file-max=65531

 

注:临时配置,重启后就失效了

 

2.   进程可打开最大文件描述设置

查看进程可打开最大文件描述符: soft nofile

# ulimit -n

65535

配置进程可打开最大文件描述符

a)永久配置

添加带背景色内容

# vim /etc/security/limits.conf

……(略)

#@student        -       maxlogins       4

* - nofile 65535

# End of file

或者如下

# vim /etc/security/limits.conf

……(略)

#@student        -       maxlogins       4

* soft nofile 65535

* hard nofile 65535

# End of file

说明:

1、- nofile 65535 表示同时配置soft limit和hard limit

2、只能在hard limit范围内修改soft limit。如上,表示进程可打开最大文件描述符数的soft limit为65535,hard limit为65535

3、需要注销重新登录配置才会生效

4、/proc/sys/fs/nr_open是单个进程可分配的最大文件数,所以在我们使用ulimit或limits.conf来配置hard limit时,如果设置的值超过/proc/sys/fs/nr_open默认值1048576需要先增大nr_open值(# vim /etc/sysctl.conf,文件末尾添加nr_open,形如fs.nr_open=100000000000)

5、对于非root用户只能设置比原来小的hard limit。

4.    总结:

b.    单个进程打开的文件描述符数不能超过user limit中nofile的soft limit

c.    nofile的soft limit不能超过其hard limit

d.    nofile的hard limit不能超过/proc/sys/fs/nr_open

Linux Linux下最大文件描述符设置的更多相关文章

  1. Linux 进程间传递文件描述符

    文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文 ...

  2. linux内核中的文件描述符(二)--socket和文件描述符

    http://blog.csdn.net/ce123_zhouwei/article/details/8459730 Linux内核中的文件描述符(二)--socket和文件描述符 Kernel ve ...

  3. Linux下的文件描述符

    文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的文件是0,第二个是1,依此类推.Unix 操作系统通常给每个进程能打开的文件数量强加一个限制.更甚的是,unix ...

  4. Linux下利用文件描述符恢复的成功失败实验

    1.测试环境准备[oracle@redhat3 ~]$ uname -aLinux redhat3 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 ED ...

  5. linux专题一之文件描述符、重定向、管道符、tee命令

    本节讨论一下几个问题: 1. 文件描述符. 2. 重定向. 3. 管道符 4. tee的用法. 1. 文件描述符. 在linux系统中一切皆文件.文件夹和设备都是文件.如何用来区别不同的文件呢?这里的 ...

  6. [转] linux系统文件流、文件描述符与进程间关系详解

    http://blog.sina.com.cn/s/blog_67b74aea01018ycx.html linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题. 包括:     ...

  7. Linux中通过Socket文件描述符寻找连接状态介绍

    针对下文的总结:socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用:open,socket,pipe 返回的都是一个描述符.不同的进程中,他们返回的描述符可以相同.那么,在 ...

  8. linux最大允许的文件描述符open files数nofile修改

    open file resource limit 是linux中process可以打开的文件句柄数量.增加这个数值需要调整两个配置: 第一步, 修改系统最大允许的文件描述符 查看当前的设置: $ ca ...

  9. linux shell exec 关联文件描述符

    在写shell脚本时,如果多个命令的输入或输出都是同一个文件,而这个文件的路径和名字都很长,则需要书写很多次同样的路径会很浪费时间,我们可以使用exec命令来关联一个自定义的文件描述符到一个特定的文件 ...

随机推荐

  1. 封装手风琴!使用jQuery!

    //封装手风琴 /** * * * */ $.fn.accordion = function (colors, width) { var width=width||0; var colors= col ...

  2. iOS学习——iOS开发小知识点集合

    在iOS学习和开发过程中,经常会遇到一些很小的知识点和问题,一两句话就可以解释清楚了,这样的知识点写一篇随笔又没有必要,但是又想mark一下,以备不时之需,所以就有了本文.后面遇到一些小的知识点会不断 ...

  3. django- Vue.js 操作

    安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 安装 vue.js cnpm install -g vue- ...

  4. python(leetcode)-1.两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...

  5. 3-7 Vue中的列表渲染

     举个案例:循环data中的list的值在div中,并显示相应的index值. 关于数组的循环: //显示效果如下图: //一般的列表渲染最好带一个key值,要把key值设置为唯一值的话,可以选择in ...

  6. 使用一年ESB感受

    ESB(Enterprise service bus)-----企业服务总线的简写. 目前使用的是openESB,Sun公司的开源社区提供的,集成在netbean中,使用glassFish服务器. 先 ...

  7. leetcode — add-binary

    /** * Source : https://oj.leetcode.com/problems/add-binary/ * * * Given two binary strings, return t ...

  8. 面向连接的TCP概述

    TCP连接概述     TCP是因特网运输层面向连接的(connection-oriented)可靠运输协议.之所以说它是面向连接的是因为  一个应用进程向另外一个应用进程发送数据之前,两个进程必须先 ...

  9. Perl的输出:print、say和printf、sprintf

    print.printf和say都可以输出信息.print和say类似,print不自带换行符,say自带换行符,但要使用say,必须写use语句use 5.010;,printf像C语言的print ...

  10. C 程序与 C++ 程序之间的相互调用

    因为 C 编译器编译函数时不带参数的类型信息,只包含函数的符号名字.如 void foo( int x ) , C 编译器会将此函数编译成类似 _foo 的符号,C 链接器只要找到了调用函数的符号,就 ...