Probé esto en diferentes instalaciones de GNU / Linux:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
Sistema A y D
El primer límite que alcanzo es 1024. Se eleva fácilmente al poner esto en /etc/security/limits.conf:
* hard nofile 1048576
y luego ejecuta:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
Ahora la prueba va a 1048576.
Sin embargo, parece que no puedo elevarlo por encima de 1048576. Si pongo 1048577 en limit.conf, simplemente se ignora.
¿Qué está causando eso?
Sistema B
En el sistema, BI ni siquiera puede llegar a 1048576:
echo 99999999 | sudo tee /proc/sys/fs/file-max
/etc/security/limits.conf:
* hard nofile 1048576
Aquí llego:
$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK
¿De dónde vino ese límite?
Sistema C
Este sistema también tiene el límite 1048576 en limits.conf y 99999999 en / proc / sys / fs / file-max.
Pero aquí el límite es 4096:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK
¿Cómo elevo eso a (al menos) 1048576?
(Nota a la libre: no hago: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max
)