Я проверил это на разных установках 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
)