Це відбувається в Ubuntu Release 12.04 (точний) 64-бітний Kernel Linux 3.2.0-25-virtual
Я намагаюся збільшити кількість відкритих файлів, дозволених користувачеві. Це для мого додатка Java eclipse java, де поточного обмеження 1024 недостатньо.
Відповідно до публікацій, які я знайшов до цих пір, я повинен бути в змозі скласти рядки
/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
-bash: 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
Але навіть якщо я запускаю затемнення як root, моє додаток все одно виходить з ладу через виняток "Занадто багато відкритого файлу"!
Поки що я не знайшов жодного способу збільшити ліміт відкритих файлів для некорінного користувача.
Як я повинен правильно це робити? Я переглянув кілька інших постів, але не пощастило!
/etc/security/limits.conf
вам, можливо, доведеться вийти з системи, а потім знову ввійти, перш ніж ви зможете використовувати новий максимальний ліміт. Я зробив це, і був здивований тим, щоulimit -Hs
все ще показував 1000, коли я щойно підняв його до 1000000! Потім я вийшов із системи та повернувся назад, і ulimit показав нову суму.