Почему он не может получить более 4096 макс. Открытых файлов для пользователя без полномочий root?
Я не могу увеличить nofile
ограничение для пользователей без полномочий root в Ubuntu 14.04, несмотря на то, что они следуют каждому ответу StackExchange, связанному с этой проблемой. Пока что у меня есть:
$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000
$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required pam_limits.so
/etc/pam.d/common-session-noninteractive:session required pam_limits.so
$ cat /proc/sys/fs/file-max
101232
Перезагрузился, залогинился и:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Там все еще как-то, кажется, ограничение в 4096 макс для пользователей без полномочий root.
3 ответа
Используя Ubuntu 14.04, я получил жесткое ограничение:
user@notebook:~$ ulimit -Hn 4096
Я мог бы уменьшить его, используя ulimit, но не увеличивать его, как описывает вопрос. Как описывает руководство ulimit:
только root может увеличить жесткий предел
Поэтому я попытался установить более высокий предел в /etc/security/limits.conf
как это:
user hard nofile 9999
и свежий логин как ssh localhost -l user
дал мне новый лимит:
user@notebook:~$ ulimit -Hn 9999
Надеюсь, это работает и для вас.
Эта статья, я думаю, решает вашу проблему.
В основном вы должны использовать команду ulimit для увеличения доступных ресурсов.
Например:
Используйте следующую команду для отображения максимального количества дескрипторов открытых файлов:
cat /proc/sys/fs/file-max
Чтобы увидеть жесткие и мягкие значения, введите команду следующим образом:
# ulimit -Hn
# ulimit -Sn
Чтобы увидеть жесткие и программные значения для пользователя httpd или oracle, введите следующую команду:
# su - username
Чтобы зафиксировать максимальное количество файлов, вы можете увеличить максимальное количество открытых файлов, установив новое значение в переменной ядра /proc/sys/fs/file-max следующим образом (войдите в систему как root):
# sysctl -w fs.file-max=100000
Выше команды форсирует ограничение до 100000 файлов. Вам нужно отредактировать /etc/sysctl.conf
файл и поставьте следующую строку, чтобы после перезагрузки настройка оставалась как есть. Для этого добавьте директиву config следующим образом:
fs.file-max = 100000
Сохраните и закройте файл. Чтобы изменения вступили в силу, пользователям необходимо выйти и снова войти в систему или просто введите следующую команду:
# sysctl -p
Проверьте настройки с помощью команды:
# cat /proc/sys/fs/file-max
или же:
# sysctl fs.file-max
Вышеуказанная процедура устанавливает ограничения файловых дескрипторов (FD) для всей системы, однако вы можете ограничить httpd
(или любых других пользователей) пользователя в определенных пределах путем редактирования /etc/security/limits.conf
файл путем редактирования /etc/security/limits.conf
и установите ограничения следующим образом:
httpd soft nofile 4096
httpd hard nofile 10240
Затем проверьте их по:
# su - httpd
$ ulimit -Hn
$ ulimit -Sn
Если у вас есть проблема в других дистрибутивах Linux, проверьте /etc/pam.d/login
и убедитесь, что у вас есть pam_limits.so
включен, например
session required pam_limits.so
Если это услуга, вы можете попытаться установить ограничение в /etc/systemd/system/{ServiceName}.service
добавлять LimitNOFILE=65536