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