Большинство значений - limits.conf
это ограничения, которые можно установить с помощью ulimit
команды оболочки или setrlimit
системного вызова. Они являются свойствами процесса. Ограничения применяются независимо для каждого процесса. В частности, каждый процесс может иметь до nofile
открытия файлов. Количество открытых файлов, накапливаемых процессами пользователя, не ограничено.
nproc
Предел немного особый случай, в том , что она просуммировать все процессы пользователя. Тем не менее, он по-прежнему применяется для каждого процесса: когда процесс вызывает fork
для создания нового процесса, вызов отклоняется, если число процессов, принадлежащих euid процесса, будет больше, чем значение процесса RLIMIT_NPROC
.
Страница limits.conf
man объясняет, что ограничения применяются к сеансу. Это означает, что все процессы в сеансе будут иметь одинаковые ограничения (если они не изменены одним из этих процессов). Это не означает, что любая сумма делается за процессы в сеансе (это даже не то, что отслеживает операционная система - есть понятие сеанса, но оно более детально, чем это, например, каждое приложение X11 стремится завершиться). в своей собственной сессии). Это работает так, что процесс входа в систему устанавливает для себя некоторые ограничения, и они наследуются всеми дочерними процессами.
¹ Исключения есть maxlogins
, maxsyslogins
и chroot
, которые применяются как часть процесса входа в систему, чтобы запретить или повлиять на вход в систему.
limit.conf
изменить время между сеансами, или если установлены другие ограничения (они должны быть меньше, кроме корневого).profile
.prlimit --pid $pid
каждый из них, вы можете эффективно изменить ограничение для активного сеанса. Обратите внимание, что вам может потребоваться сделать это несколько раз, если некоторые процессы будут разветвлены во время итерации.RLIMIT_NPROC
установленными в 2 в A и в 3 в B. Тогда B может форкировать еще один процесс, но A не может.