Виправлення помилки: відкриті файли: не може змінити ліміт: Операція не дозволена


13

Я перевірив це на різних установках GNU / Linux:

perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'

Система A і D

Перша межа, яку я потрапила, - 1024. Її легко підняти, ввівши це в /etc/security/limits.conf:

*                hard    nofile          1048576

а потім запустіть:

ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max

Тепер тест переходить до 1048576.

Однак, здається, я не можу підняти його вище 1048576. Якщо я поставив 1048577 в limit.conf, це просто ігнорується.

Що це викликає?

Система B

У системній BI навіть не може дістатися до 1048576:

echo 99999999 | sudo tee /proc/sys/fs/file-max

/etc/security/limits.conf:

*                hard    nofile          1048576

Ось я отримую:

$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK

Звідки взялася ця межа?

Система С

Ця система також має обмеження 1048576 у limit.conf та 99999999 в / proc / sys / fs / file-max.

Але тут обмеження становить 4096:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK

Як підняти це (принаймні) до 1048576?

(Примітка до себе: Не робіть echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max:)


1
У мене точно такий самий випуск, обмеження здається 1048576. Якщо я перейду, я отримаю таку помилку: bash: ulimit: відкрити файли: не можу змінити ліміт: Операція не дозволена
Аббадон

Привіт, у мене дуже схожа проблема. Я думаю, було б дуже корисно надати більше детальних відомостей про те, що ці різні системи.
Time4Tea

Відповіді:


4

Перевірте, що /etc/ssh/sshd_configмістить:

UsePAM=yes

і /etc/pam.d/sshdмістить:

session    required   pam_limits.so

Ще немає відповіді на те, чому 1048576 макс.

1048576, схоже, на один процес. Отже, маючи кілька процесів, цю межу можна подолати.


4
Якби це справді було вирішенням вашої власної проблеми, я думаю, було б добре провести більше зв'язку між проблемою та вищезазначеним рішенням.
Jeff Schaller

2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, для довідки). Там можуть бути деякі важливі відомості в цій відповіді тут: stackoverflow.com/a/1213069/2320823
saladi

1
Що ssh має з цим?
Лінас

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