Жесткие ограничения и мягкие ограничения в Linux

Я пытаюсь понять, как работают эти ограничения. Но я не могу понять, зачем нужен мягкий лимит, когда присутствует жесткий лимит. Большинство сайтов, через которые я прошел, рассказывают о том, чем они являются, но ни один не упоминал о том, как они работают.

В контексте процессов, кто-нибудь может объяснить, как они работают?

Спасибо.

1 ответ

Решение

Давайте рассмотрим пользователя 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,

Разве мы не можем просто использовать жесткие ограничения?

Да мы можем.

abc     soft    nproc   20000
abc     hard    nproc   20000

Установка мягкого предела равным жесткому пределу сделает жесткий предел пределом по умолчанию для abc пользователь. Но это не рекомендуется, так как это может привести к тому, что один пользователь исчерпает большинство процессов (если установленный предел относительно высок), которые могут быть полностью созданы (pid_max).

Другие вопросы по тегам