Ich habe dies auf verschiedenen GNU / Linux-Installationen getestet:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
System A und D.
Das erste Limit, das ich erreicht habe, ist 1024. Es kann leicht erhöht werden, indem man es in /etc/security/limits.conf einfügt:
* hard nofile 1048576
und dann ausführen:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
Jetzt geht der Test zu 1048576.
Es scheint jedoch, dass ich es nicht über 1048576 erhöhen kann. Wenn ich 1048577 in limit.conf setze, wird es einfach ignoriert.
Was verursacht das?
System B.
Auf dem System kann BI nicht einmal 1048576 erreichen:
echo 99999999 | sudo tee /proc/sys/fs/file-max
/etc/security/limits.conf:
* hard nofile 1048576
Hier bekomme ich:
$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK
Woher kam diese Grenze?
System C.
Dieses System hat auch das Limit 1048576 in limit.conf und 99999999 in / proc / sys / fs / file-max.
Aber hier ist die Grenze 4096:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK
Wie erhöhe ich das auf (mindestens) 1048576?
(Hinweis zur Selbsthilfe : Tun Sie das nicht: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max
)