Исправление ulimit: открыть файлы: невозможно изменить ограничение: операция не разрешена

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, он просто игнорируется.

Что вызывает это?

Система Б

В системе 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. Если я иду через я получаю следующее сообщение об ошибке: Баш: ULIMIT: открытые файлы: не может изменить ограничение: Операция не допускается
Абаддон
Привет, у меня очень похожая проблема. Я думаю, что было бы очень полезно предоставить более подробную информацию о том, что представляют собой эти разные системы.
Time4Tea

Ответы:

4

Проверьте, что /etc/ssh/sshd_configсодержит:

UsePAM=yes

и это /etc/pam.d/sshdсодержит:

session    required   pam_limits.so

До сих пор нет ответа на вопрос, почему 1048576 является макс.

1048576, кажется, для процесса. Таким образом, имея несколько процессов, этот предел можно преодолеть.

Оле Танге
источник
4
Если бы это действительно было решением вашей собственной проблемы, я думаю, что было бы неплохо провести более тесную связь между проблемой и вышеуказанным решением.
Джефф Шаллер
2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, для справки). В этом ответе может содержаться некоторая соответствующая информация: stackoverflow.com/a/1213069/2320823
saladi
1
При чем тут ssh?
Линас
Я согласен с @Linas. Извините, я думаю, что связь между ответом и вопросом неясна.
Time4Tea