Bunu farklı GNU / Linux kurulumlarında test ettim:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
Sistem A ve D
Vurduğum ilk sınır 1024'tür. Bunu /etc/security/limits.conf dosyasına koyarak kolayca yükseltilir:
* hard nofile 1048576
ve sonra çalıştırın:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
Şimdi test 1048576'ya gidiyor.
Ancak, bunu 1048576'nın üzerine çıkaramıyorum gibi görünüyor. 1048577'yi limit.conf'a koyarsam, göz ardı edilir.
Buna ne sebep oluyor?
Sistem B
BI sisteminde 1048576'ya bile ulaşamaz:
echo 99999999 | sudo tee /proc/sys/fs/file-max
/etc/security/limits.conf:
* hard nofile 1048576
İşte alacağım:
$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK
Bu sınır nereden geldi?
Sistem C
Bu sistem ayrıca 1048576 limit.conf ve 99999999 inç / proc / sys / fs / file-max sınırındadır.
Ama burada sınır 4096:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK
Bunu (en azından) 1048576'ya nasıl yükseltirim?
(Self Not: Do do not: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max
)