чи потрібні зміни в /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

Ні, але вам слід закрити всі вікна активних сеансів. Вони ще пам’ятають старі цінності. Іншими словами, вийдіть із системи та поверніться назад. Кожен віддалений новий сеанс або локальна захищена оболонка впливають на зміни меж .


17
Що робити, якщо я хочу встановити обмеження для користувача, який не має входу, наприклад, якщо я хочу встановити nofileліміт 94000для mongodbкористувача? Як я могла це зробити без перезавантаження? Мені просто потрібно перезапустити mongodbпослугу?
Олексій Магура

2
@AlexejMagura Ви можете змінювати рамки запущених процесів за допомогою prlimitкоманди.
Братчлі

7
@Gilles, дякую за вказівки, я відредагував свою відповідь, щоб уникнути двозначності. Однак запуск нової послуги з використанням sudo service mongodb restartдостатньо, щоб служба працювала з новими граничними значеннями.
Slyx

6
якщо ви використовуєте Ubuntu, і mongodb запускається на початку, зміна цих обмежень не вплине на mongodb. Оскільки upstartне читає / etc / config config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669, ви повинні встановити limitстрофу у своєму початковому конфігураційному файлі.
HVNSweeting

5
Це вже інше питання. upstartдизайн ігнорує межі , встановлені в /etc/security/limits.conf.
Slyx

35

Застосовуйте зміни безпосередньо до запущеного процесу, якщо у вас встановлений prlimit (поставляється з util-linux-2.21)

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

наприклад

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

Зверніться сюди


29

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

Приклад:

# 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

15

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

Якщо ви зміните /etc/security/limits.conf, це вплине на всі нові сесії та процеси в цих нових сесіях. Це не вплине на процеси, які вже запущені, а також на процеси, запущені процесами, які вже запущені.

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


4

Цитую @ відповідь Tombart в

Ці обмеження будуть застосовані після перезавантаження.

Якщо ви хочете застосувати зміни без перезавантаження, змініть /etc/pam.d/common-session, додавши цей рядок в кінці файлу:

session required pam_limits.so
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.