Як встановити ліміт кількості файлів, які Linux може відкрити?


11

Планую запустити додаток Java за допомогою nohup ... &. Обмеження має стосуватися таких команд.


Але це спричинило помилку в моїй програмі java

Відповіді:


7

Більшість систем використовують PAM і мають pam_limitsвстановлені ліміти обмежень на основі /etc/security/limits.conf. Викликається обмеження для відкритих файлів для кожного користувача nofile. Ви можете встановити його для кожного користувача або для конкретного користувача чи групи, а також можна встановити ліміт, який може переоцінити користувач (м'який ліміт) та інший, який може перекривати лише root (жорсткий ліміт). Документація і limits.confсторінка майте деталі. Наприклад, щоб підвищити ліміт до 50000 для всіх, введіть цей рядок /etc/limits.conf(налаштування набуває чинності під час входу в систему):

* - nofile 50000

в межах limits.confробити * hard nofile 50000та / або * soft nofile 50000. Я не знаю технічної різниці між твердим і м'яким і завжди робив і те, і інше.
ron

У SLES 11.4, наприклад, використовуючи tcsh, можна limit descriptors 50000змінити значення в заданому вікні / сеансі терміналу.
ron

@ron -` у другому стовпці встановлює і м'який, і жорсткий межа. Їх потрібно встановити окремо, лише якщо ви бажаєте різних значень. М’який ліміт можна змінити в будь-який час, запустивши ulimitкоманду (викликається limitв csh). Непривілейований користувач ніколи не може перевищувати жорстку межу.
Жил "ТАК - перестань бути злим"

якщо я встановив лише жорсткий, чи залишається м'яке значення за замовчуванням? якщо я встановив лише м'який і не жорсткий, чи залишається жорстким значення за замовчуванням або по суті рівне м'яке значення? Чи можна встановити м'який> жорсткий? М’яким є реальна цінність, яка діє? вибачте за запитання.
ron

@ron М'який межа автоматично обмежується на жорсткій межі. Якщо встановити лише жорсткий ліміт, то це встановлює м'який ліміт максимального значення (default_soft_limit, фактичний_hard_limit).
Жил "ТАК - перестань бути злим"

4

ви можете додати fs.file-max = <your number>в /etc/sysctl.conf. Потім перезавантажте.


cat / proc / sys / fs / file-max - 169203 ,, але ulimit -n - 1024

Не потрібно перезавантажувати. Просто біжи sysctl fs.file-max=123456. ( /etc/sysctl.confчитається під час завантаження за сценарієм, який закликає sysctlвміст.)
Жил "ТАК - перестань бути злим"

3
ulimit -n

може змінювати параметри процесу та

/proc/sys/fs/file-max

або названа змінна sysctl fs.file-maxможе використовуватися для читання та встановлення загальносистемного значення


cat / proc / sys / fs / file-max - 169203 ,, але ulimit -n - 1024

1

Ви можете використовувати ulimit для цього:

http://bloggerdigest.blogspot.com/2006/10/purpose-of-ulimit-linux-command.html

Хоча ви повинні переконатися, що відкривати так багато ручок файлів абсолютно необхідно, перш ніж вдаватися до таких коригувань. Збільшення максимального розміру файлу лише тому, що ви забули зробити inputstream.close () в циклі, лише затримаєте основну проблему.


1
Я хочу підключитися до безлічі клієнтів

1

Використовуйте ulimit (команда Bash - man bash або знайдіть подібне для вашої оболонки) для кожного екземпляра програми. Не використовуйте глобальні системні обмеження, якщо ви не знаєте, що ви робите - можливий DoS.


У SLES 11.4 Я поставив nofileв limits.confбути 100000. успішно. Я можу засвідчити, що встановлення занадто великого значення перешкоджало подальшому входу з SSH, і мені довелося завантажуватися з DVD, щоб виправити це значення у limit.conf, щоб відновити систему.
ron

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.