zoukankan      html  css  js  c++  java
  • linux文件描述符fd(windows下的句柄)

    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件

    fd:file descriptor

    文件描述符0,1,2分别给了标准输入、标准输出和错误输出。

    ls -l /proc/pid/fd可以查看某个进程所使用的fd

    用lsof可以查看
    比如:lsof -i :22 的显示结果中有一列是FD,这个就是监听在22号端口的进程打开的文件描述符。比如FD这一列显示的是3。再使用lsof -d 3就可以查看到,文件描述符3所打开的文件。

    1.    系统最大打开文件描述符数:/proc/sys/fs/file-max

     设置

    a.    临时性

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

    b.    永久性:在/etc/sysctl.conf中设置

    fs.file-max = 1000000

    2.    进程最大打开文件描述符数:user limit中nofile的soft limit

    a.    查看

    $ ulimit -n

    1700000

    2. 设置

    a.    临时性:通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit不能大于hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默认查看的是soft limit,但是ulimit -n 1800000则是同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。

    查看hard limit:

    $ ulimit -Hn

    1700000

    设置soft limit,必须小于hard limit:

    $ ulimit -Sn 1600000

    2.    永久性:上面的方法只是临时性的,注销重新登录就失效了,而且不能增大hard limit,只能在hard limit范围内修改soft limit。若要使修改永久有效,则需要在/etc/security/limits.conf中进行设置(需要root权限),可添加如下两行,表示用户chanon最大打开文件描述符数的soft limit为1800000,hard limit为2000000。以下设置需要注销之后重新登录才能生效:

    chanon           soft    nofile          1800000

    chanon           hard   nofile          2000000

    设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。可以修改nr_open的值:

    # echo 2000000 > /proc/sys/fs/nr_open

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

    [root@localhost bin]# cat /proc/sys/fs/file-nr

    5664        0        186405

    其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。

    4.    总结:

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

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

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

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

    参考:

    http://blog.51cto.com/noican/1733706

    https://blog.csdn.net/cywosp/article/details/38965239

    https://www.kancloud.cn/kancloud/understanding-linux-processes/52176

    https://blog.csdn.net/dlutbrucezhang/article/details/9319577

    https://zhuanlan.zhihu.com/p/26609946

  • 相关阅读:
    JS BOM对象 History对象 Location对象
    JS 字符串对象 数组对象 函数对象 函数作用域
    JS 引入方式 基本数据类型 运算符 控制语句 循环 异常
    Pycharm Html CSS JS 快捷方式创建元素
    CSS 内外边距 float positio属性
    CSS 颜色 字体 背景 文本 边框 列表 display属性
    【Android】RxJava的使用(三)转换——map、flatMap
    【Android】RxJava的使用(二)Action
    【Android】RxJava的使用(一)基本用法
    【Android】Retrofit 2.0 的使用
  • 原文地址:https://www.cnblogs.com/shengulong/p/8778725.html
Copyright © 2011-2022 走看看