Linux上的用户级别与系统级别的限制

我写了一个小程序,打开一堆文件,并在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 /能力 )