我写了一个小程序,打开一堆文件,并在Ubuntu上打开文件限制(以root身份)。 我很惊讶地看到,只有用户级别的限制对打开的最大文件数量有影响。
我在/etc/security/limits.conf中添加了这个:
root hard nofile 30000 root soft nofile 30000
并将/ proc / sys / fs / file-max设置为20000( sysctl -w fs.file-max=20000
)。
然后我运行我的程序打开29000个文件没有任何问题。
为什么系统级设置在这种情况下不起作用?
我想通了,回顾一下 –
Linux上的用户级限制是在/etc/security/limits.conf(或在/limits.d目录下)设置的,
系统级别限制在/etc/sysctl.conf中设置(立即通过如下命令更改: sysctl -w fs.file-max=20000
)
在我最初的testing中,打开文件的系统级限制被忽略,因为我以root身份运行我的程序,所以这是一个特权进程, Linux上的特权进程绕过所有的内核权限检查 ( http://linux.die.net/man / 7 /能力 )