Назад | Перейти на главную страницу

«Открытые файлы» ulimit: управление через limits.conf

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

У меня есть система Red Hat 7.3 (не спрашивайте), где желательно увеличить лимит открытых файлов для wls81 пользователь. Я думал, что просто не могу это контролировать, но все больше кажется, что у меня проблема только с пользователем, которого мне нужно изменить. Я добавил следующие строки в /etc/security/limits.conf:

wls81       soft    nofile      10100
wls81       hard    nofile      10240
madhatta    soft    nofile      10100
madhatta    hard    nofile      10240

pam_limits.so правильно вызывается, насколько я могу судить:

[madhatta@server madhatta]$ sudo grep limits /etc/pam.d/*
/etc/pam.d/login:session    required     /lib/security/pam_limits.so
/etc/pam.d/sshd:session    required     /lib/security/pam_limits.so
/etc/pam.d/su:session    required     /lib/security/pam_limits.so
/etc/pam.d/system-auth:session     required      /lib/security/pam_limits.so

Когда я использую ssh как сам, я получаю новый мягкий предел и могу увеличивать его до жесткого:

desktop> ssh server
Last login: Thu May 10 13:20:13 2012 from a.b.c.d
[madhatta@server madhatta]$ ulimit -n 
10100
[madhatta@server madhatta]$ ulimit -n 10200
[madhatta@server madhatta]$ ulimit -n 
10200
[madhatta@server madhatta]$ ulimit -n 10300
bash: ulimit: cannot modify open files limit: Operation not permitted

но когда я ssh в качестве wls81 пользователь, я не могу:

desktop> ssh wls81@server
Last login: Wed May  9 22:29:33 2012 from a.b.c.d
[wls81@server wls81]$ ulimit -n
1024
[wls81@server wls81]$ ulimit -n 10000
bash: ulimit: cannot modify open files limit: Operation not permitted

То же самое происходит, когда я su - каждому пользователю. Честно говоря, я не понимаю, почему этот пользователь не может ulimits сброс. У кого-нибудь есть идеи?

Что ж, загадка раскрыта. Я обнаружил, что когда сделал su - wls81 Я получил ограничение в 1024, но когда я только что сделал su wls81 Я получил новый, более высокий предел. Оказывается, wls81's .bash_profile вызвал другой сценарий, который, в свою очередь, вызвал сценарий настройки среды от совершенно другого пользователя в системе, который выполнил ulimit -n 1024.

Когда я удалил эту строку, wls81 теперь получает новый лимит.

Я думаю, вам также может потребоваться проверить и, возможно, установить максимальные файловые дескрипторы для открытых файлов в ядре:

sudo systcl fs.file-max

и отредактируйте /etc/sysctl.conf, чтобы сделать изменения постоянными.