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

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 个文件,没有任何问题。

为什么在这种情况下系统级设置没有任何效果?

答案1

我明白了,总结一下 -

用户级别限制在 Linux 上设置在 /etc/security/limits.conf (或 /limits.d 目录下)

系统级限制在 /etc/sysctl.conf 中设置(可以通过这样的命令立即更改sysctl -w fs.file-max=20000:)

在我的初始测试中,系统级的打开文件限制被忽略了,因为我正在运行我的程序,所以这是一个特权过程,Linux 上的特权进程绕过所有内核权限检查http://linux.die.net/man/7/capabilities

相关内容