Linux 中的硬限制和软限制

Hard Limits and Soft limits in Linux

我想了解这些限制是如何运作的。 但是我无法弄清楚,为什么在存在硬限制时首先需要软限制。 我浏览过的大多数网站都在谈论它们是什么,但 none 提到它们是如何工作的。

在进程的上下文中,谁能解释一下这些是如何工作的?

谢谢。

让我们考虑一个用户abc,其进程数设置为

abc     soft    nproc   1024
abc     hard    nproc   20000

当此用户登录时,用户具有应用的有效进程软限制,即 abc 最多可以 运行 1024 个进程。 当此限制用完时,除非进一步增加软限制,否则用户将无法再进行 运行 处理。

此时,用户可以选择增加(但不应大于硬限制)进程限制。
如果用户尝试将其增加到 21000(高于 20000 的硬限制)

ulimit -S -u 21000
-bash: ulimit: max user processes: cannot modify limit: Operation not permitted

但可以将其设置为小于或等于硬限制的任何值。增加硬限制只能通过 root.

来完成

Can't we just use the hard limits?

是的,我们可以。

abc     soft    nproc   20000
abc     hard    nproc   20000

将软限制设置为等于硬限制将使硬限制成为 abc 用户的默认限制。 但不建议这样做,因为它可能导致单个用户耗尽大部分可以完全生成的进程(如果限制设置相对较高)(pid_max)。