是的,我知道这个问题被问过很多次,但不幸的是我没有找到完整的答案。
那么,如何限制每个用户同时执行的进程数?
我找到了两个解决方案:
使用 pam_limits。在这种情况下,我需要配置 /etc/security/limits.conf 文件。不幸的是,该解决方案仅适用于 pam 感知应用程序,也就是说它不是通用的。
使用从 $HOME/profile 调用的 ulimit。不幸的是,它也不是在所有情况下都有效。我尝试设置“ulimit -u 100”,然后在同一个 shell 中启动“stress --vm 200 --vm--bytes 100”。应用程序已成功启动,我在用户 root 下获得了 200 多个进程。
我需要建立一个强大的系统,因此仅在某些情况下起作用的解决方案是不合适的。
答案1
内核安全补丁grsecurity有一个名为 的功能Enforce RLMIT_NPROC on execs
。启用后,它会强制将每个用户的限制设置为系统范围的限制,而不是每个登录的限制(或者更糟,正如您所观察到的)。
答案2
在同一个 shell 中它不起作用。尝试将 ulimit 设置放入 root 的 .bashrc 中,再次以 root 身份登录并尝试。您可以使用 ulimit -a 进行验证。
答案3
您可以在/etc/security/limits.conf