limits.conf
/etc/security/limits.conf
允许为通过 PAM 登录的用户设置资源限制。这是一种有用的方法,例如,防止 fork 炸弹 耗尽所有系统资源。
/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
设置为 64000
或 128000
[1]。
* hard nofile 65535 * soft nofile 8192 # Required for certain games to run.
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.