Linux文件描述符打开限制

493 阅读1分钟

三个控制范围,逐渐细化

操作系统级别,用户级别,程序级别(进程级别)

查看系统级别可打开文件描述符(所有用户所有进程能打开的描述符数):

**-> % sudo sysctl -a | grep "file-max"**

**-> % cat /proc/sys/fs/file-max**

查看用户级别

cat /etc/security/limits.conf 默认是没有的,默认每个进程最大打开文件描述符数是由程序级别控制

查看程序级别最大打开文件描述符数量

cat /proc/sys/fs/nr_open

1048576

修改对应级别限制数:

系统级最大值由机器硬件决定:

通过sysctl命令修改/etc/sysctl.conf文件:

sysctl -w fs.file-max=2048,完成后执行sysctl -p即可

直接修改/etc/sysctl.conf文件

用户级修改:

修改用户级限制 临时修改,

  • 永久修改:编辑/etc/security/limits.conf  (需重启生效,并且在/etc/pam.d/中的seesion有使用到limit模块)

**-> % vi /etc/security/limits.conf  限制用户打开文件描述符数量, *代表所有用户,也可以指定具体一个用户**

* hard nofile 65536

* soft nofile 65536

进程级别临时限制修改:

只对当前shell有效:ulimit -HSn 65536

-> % ulimit -SHn 2048 只对当前shell有效,而且是临时性的

查看某个进程能打开最大文件描述符 应与/etc/security/limits.conf设置相等

cat /proc/PID/limists | grep "open files"