三个控制范围,逐渐细化
操作系统级别,用户级别,程序级别(进程级别)
查看系统级别可打开文件描述符(所有用户所有进程能打开的描述符数):
**-> % 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"