Это происходит на Релизе 12.04 Ubuntu (точное) 64-разрядное Ядро 3.2.0-25-виртуальный Linux
Я пытаюсь увеличить число открытых файлов, допускал пользователя. Это для моего JAVA-приложения затмения, где ограничение по току 1 024 недостаточно.
Согласно сообщениям я нашел до сих пор, я должен смочь поместить строки в
/etc/security/limits.conf как это:
soft nofile 4096
hard nofile 4096
увеличивать число открытых файлов допускало всех пользователей.
Но это не работает на меня, и я думаю, что проблема не связана с тем файлом.
Для всех пользователей предел по умолчанию 1024, независимо от того, что находится в/etc/security/limits.conf (я перезагрузил после изменения того файла),
$ ulimit -n
1024
Теперь, несмотря на записи в/etc/security/limits.conf я не могу увеличить это:
$ ulimit -n 2048
- удар: ulimit: открытые файлы: не может изменить предел: Операция, не разрешенная странную часть, состоит в том, что я могу изменить предел вниз, но не могу изменить его вверх - даже для возвращения к числу, которое является ниже исходного предела:
$ ulimit -n 800
$ ulimit -n
800
$ ulimit -n 900
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Как корень, я могу изменить тот предел тому, что я хочу, или вниз. Это, даже кажется, не заботится о, предположительно, пределе в масштабе всей системы в/proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
188897
# ulimit -n 188898
# ulimit -n
188898
Но даже я заставляю затмение работать как корень, мое приложение все еще отказывает из-за "Слишком многих, Открывают Файл" исключение!
До сих пор я не нашел способа увеличить открытый предел файлов для некорневого пользователя.
Как я должен правильно сделать это? Я посмотрел на несколько других сообщений, но никакую удачу!
Команда ulimit
по умолчанию изменяет жесткие пределы, которые вы (пользователь) можете снизить, но не можете увеличить.
Используйте -S , чтобы изменить предел SOFT , который может находиться в диапазоне от 0 до { HARD }.
Я фактически использовал псевдоним ulimit
на ulimit -S
, поэтому по умолчанию все время используются мягкие ограничения.
alias ulimit='ulimit -S'
Что касается вашей проблемы, вам не хватает столбца в ваших записях в /etc/security/limits.conf
.
Должно быть ЧЕТЫРЕ столбца, но первый в вашем примере отсутствует.
* soft nofile 4096
* hard nofile 4096
Первый столбец описывает, на кого должно подаваться ограничение. '*' - это подстановочный знак, означающий всех пользователей. Чтобы увеличить ограничения для root , вы должны явно ввести «root» вместо «*».
Также необходимо отредактировать /etc/pam.d/common-session*
и добавьте в конец следующую строку:
session required pam_limits.so
У меня много проблем с тем, чтобы заставить это работать.
Использование следующего позволяет обновлять его независимо от вашего разрешения пользователя.
sudo sysctl -w fs.inotify.max_user_watches=100000
Ja katram lietotājam izmantojat mīkstos un stingros ierobežojumus, varat izmantot šādus vārdus:
su USER --shell /bin/bash --command "ulimit -n"
, lai pārbaudītu, vai jūsu iestatījumi darbojas konkrētajā lietotājā, vai nē.
ulimit -S -n 4096
Это должно увеличить ваш мягкий предел для открытых файлов (-n) до 4096.