limits.conf

出自 ArchWiki

此文章或章节建议移动到系统限制

注意: 这也应该涵盖在 systemd 配置中设置限制。(在Talk:Limits.conf#Including systemd issues中讨论)

/etc/security/limits.conf 允许为通过 PAM 登录的用户设置资源限制。这是一种有用的方法,例如,防止 fork 炸弹 耗尽所有系统资源。

注意: 此文件不影响系统服务。对于 systemd 服务,文件 /etc/systemd/system.conf/etc/systemd/user.conf/etc/systemd/system/unit.d/override.conf 控制限制。请参阅 systemd-system.conf(5) 手册页以了解详细信息。

语法

默认文件带有详细注释,但可以通过查看 limits.conf(5) 手册页来获取更多信息。

建议

core

Core 文件对于调试很有用,但在正常使用系统时会很烦人。您应该将软限制设置为 0,硬限制设置为 unlimited,然后在需要 core 文件进行调试时,使用 ulimit -c unlimited 临时提高当前 shell 的限制。

*           soft    core       0           # Prevent corefiles from being generated by default.
*           hard    core       unlimited   # Allow corefiles to be temporarily enabled.

nice

您应该禁止除 root 用户以外的所有人拥有最低优先级 (-20) 的进程,以便 root 用户可以修复无响应的系统。

*           hard    nice       -19         # Prevent non-root users from running a process at minimal niceness.
root        hard    nice       -20         # Allows root to run a process at minimal niceness to fix the system when unresponsive.

nofile

这限制了指定域拥有的任何进程在任何给定时间可以打开的文件描述符的数量。您可能需要将此值增加到高达 8192使某些游戏能够工作。一些数据库应用程序(如 MongoDB 或 Apache Kafka)建议将 nofile 设置为 64000128000[1]

*           hard    nofile     65535
*           soft    nofile      8192       # Required for certain games to run.
警告: 将此值设置得太高或设置为 unlimited 可能会破坏某些工具,如 fakeroot

nproc

设置 nproc 限制非常重要,因为这将限制 fork 炸弹可以复制的次数。但是,设置得太低可能会使您的系统不稳定甚至无法使用,因为将无法创建新进程。

即使对于最简约的窗口管理器来说,300 的值也太低,无法运行多个桌面应用程序和守护程序,但对于无 X 服务器来说通常还可以(事实上,300 是佐治亚大学计算机科学系在 2017 年用于其 Linux 服务器上的本科生进程限制的值。)。

这是一个针对系统上所有用户的 nproc 限制示例

*           hard    nproc      2048        # Prevent fork-bombs from taking out the system.

请注意,2048 的值只是一个示例,您可能需要将其设置得更高。另一方面,您也可能可以使用较低的值。

无论您将 nproc 设置为多少,请确保允许您的 root 用户创建任意数量的进程;否则,您可能会因将普通 nproc 限制设置得太低而使您的系统无法运行。请注意,此行必须放在全局硬限制之后,并且下面的值 (65536) 是任意的。

root        hard    nproc      65536       # Prevent root from not being able to launch enough processes

priority

默认优先级通常应为 0,但您可以使用此参数将单个用户和组设置为具有不同的默认优先级。

*           soft    priority   0           # Set the default priority to neutral niceness.