Я бьюсь об этом головой и не могу понять, почему это не работает. Я надеюсь, что кто-то сможет пролить свет на это или, если это не получится, дать мне несколько советов по направлениям расследования.
У меня есть система 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 -
каждому пользователю. Честно говоря, я не понимаю, почему этот пользователь не может ulimit
s сброс. У кого-нибудь есть идеи?
Что ж, загадка раскрыта. Я обнаружил, что когда сделал su - wls81
Я получил ограничение в 1024, но когда я только что сделал su wls81
Я получил новый, более высокий предел. Оказывается, wls81's .bash_profile
вызвал другой сценарий, который, в свою очередь, вызвал сценарий настройки среды от совершенно другого пользователя в системе, который выполнил ulimit -n 1024
.
Когда я удалил эту строку, wls81 теперь получает новый лимит.
Я думаю, вам также может потребоваться проверить и, возможно, установить максимальные файловые дескрипторы для открытых файлов в ядре:
sudo systcl fs.file-max
и отредактируйте /etc/sysctl.conf, чтобы сделать изменения постоянными.