изменения в /etc/security/limits.conf требуют перезагрузки?

144

/etc/security/limits.confТребуют ли изменения перезагрузки перед вступлением в силу?

Например, если у меня есть сценарий, который устанавливает следующие ограничения /etc/security/limits.conf, требует ли это перезагрузки системы, чтобы эти ограничения вступили в силу?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Алексей Магура
источник
2
выхода должно быть достаточно
UVV
Отредактируйте файл /etc/security/limits.d/90-nproc.conf и перезагрузите систему

Ответы:

108

Нет, но вы должны закрыть все активные окна сеансов. Они до сих пор помнят старые ценности. Другими словами, выйдите из системы и снова войдите в нее. Каждый новый удаленный сеанс или локальная безопасная оболочка вступают в силу изменений ограничений .

Slyx
источник
17
Что если я хочу установить ограничения для пользователя, у которого нет логина, например, если я хочу установить nofileограничение 94000для mongodbпользователя? Как я мог это сделать без перезагрузки? Нужно ли просто перезапустить mongodbсервис?
Алексей Магура
2
@AlexejMagura Команду запускаемых процессов можно изменить prlimitкомандой.
Братчли
7
@ Жиль, спасибо за точность, я отредактировал свой ответ, чтобы избежать двусмысленности. Однако sudo service mongodb restartзапуска нового сервиса с использованием достаточно, чтобы сервис работал с новыми предельными значениями.
Сликс
6
Если вы используете Ubuntu, и mongodb запускается программой upstart, то изменение этих ограничений не повлияет на mongodb. Так upstartкак не читает / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669, вы должны установить limitstanza в его файле конфигурации upstart.
HVNSweeting
5
Это другая проблема. upstartпо конструкции игнорирует ограничения, установленные в /etc/security/limits.conf.
Слайкс
35

Примените изменения непосредственно к работающему процессу, если у вас установлен prlimit (поставляется с util-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

например

prlimit --pid 12345 --nofile=1024:2048

Обратитесь сюда

Баран
источник
29

Чтобы временно установить лимит открытых файлов для пользователя, в котором вы в данный момент находитесь (например, «root»): Вы также можете использовать ulimitкоманду для изменения значений в вашей текущей оболочке. Однако жесткие ограничения могут быть скорректированы только вниз, если вы не root.

Пример:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Для того, чтобы изменить nofileк 94000 вы можете сделать:

ulimit -n 94000
Boogy
источник
15

Пределы наследуются от родительского процесса к его дочерним процессам. Процессы, работающие от имени пользователя root, могут произвольно изменять пределы; другие процессы не могут увеличить жесткие пределы. Таким образом, жесткие ограничения, установленные процессом входа в систему, влияют на все процессы в сеансе.

Если вы измените /etc/security/limits.confэто, это повлияет на все новые сеансы и процессы в этих новых сеансах. Это не повлияет на уже запущенные процессы и процессы, запущенные уже запущенными процессами.

Поэтому, если вам нужно увеличить некоторые ограничения, вам придется либо выйти из системы и снова войти в нее, либо начать другой сеанс (например, с помощью ssh localhostили на другой консоли).

жилль
источник
4

Процитировать @ ответ Томбарта

Эти ограничения будут применяться после перезагрузки.

Если вы хотите применить изменения без перезагрузки, измените /etc/pam.d/common-session, добавив следующую строку в конец файла:

session required pam_limits.so
Serv-вкл
источник