Saya menguji ini pada instalasi GNU / Linux yang berbeda:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
Sistem A dan D
Batas pertama yang saya tekan adalah 1024. Batas ini mudah dinaikkan dengan memasukkannya ke /etc/security/limits.conf:
* hard nofile 1048576
lalu jalankan:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
Sekarang tes menuju ke 1048576.
Namun, sepertinya saya tidak bisa menaikkannya di atas 1048576. Jika saya meletakkan 1048577 di membatasi.conf itu hanya diabaikan.
Apa yang menyebabkan itu?
Sistem B
Pada sistem BI bahkan tidak bisa mencapai 1048576:
echo 99999999 | sudo tee /proc/sys/fs/file-max
/etc/security/limits.conf:
* hard nofile 1048576
Di sini saya dapatkan:
$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK
Dari mana batas itu berasal?
Sistem C
Sistem ini juga memiliki batas 1048576 di Limit.conf dan 99999999 di / proc / sys / fs / file-max.
Tapi di sini batasnya adalah 4096:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK
Bagaimana cara menaikkan itu ke (setidaknya) 1048576?
(Catatan untuk diri sendiri: Jangan lakukan echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max
:)