对 /etc/sysctl.conf 与 /etc/security/limits.conf 之间的差异感到困惑

对 /etc/sysctl.conf 与 /etc/security/limits.conf 之间的差异感到困惑

我在 Azure 云中的 Ubuntu18.04.1 仿生 VM 上。我正在尝试在系统级别设置文件描述符的最大数量。当我最初登录并运行时,ulimit -n我得到的值为1024。所以我检查了/etc/security/limits.conf,但里面没有配置。所以我想也许它在 中是这样配置的cat /proc/sys/fs/file-max,所以当我检查它时,它被设置为 1426416。所以问题 1:1024 来自哪里?

我可以通过在/etc/security/limits.conffor nofile* 和根域中设置一些条目来更改它,并将其提高到 65536,现在ulimit -n反映了它。所以我的问题 2: 中条目的目的是什么/proc/sys/fs/file-max?我认为可以使用它来设置sysctl.conf

答案1

文件 /etc/security/limits.conf 用于配置 pam_limits,并且仅影响通过 PAM 堆栈启动的用户和服务。

/proc/sys/fs/file-max 由内核 sysctl 定义,是操作系统启动的进程的设置。

您还可以通过将 LimitNOFILE=1024 添加到单元文件来设置 systemd 服务中的文件限制。

答案2

1024从哪里来?

这是内核的打开文件数量的默认限制,每个进程。这是其中之一资源限制可以为每个进程设置。

进入的目的是什么/proc/sys/fs/file-max

file-max指定文件句柄的最大数量,对于整个系统。一旦达到此限制,任何进程都将无法打开文件,无论其自身的每个进程限制如何。

nr_open,在同一目录中,指定最大每个进程的限制。实际使用的值是资源限制(见上文);这决定了最大资源限制可以是多少。

相关内容