আমি এটি বিভিন্ন জিএনইউ / লিনাক্স ইনস্টলেশনতে পরীক্ষা করেছি:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
সিস্টেম এ এবং ডি
আমি যে প্রথম সীমাটি আঘাত করেছি সেটি হ'ল 1024 It এটি সহজেই /etc/security/limits.conf এ স্থাপন করা হয়:
* hard nofile 1048576
এবং তারপরে চালান:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
এখন পরীক্ষাটি 1048576 এ চলেছে।
যাইহোক, দেখে মনে হচ্ছে আমি এটিকে 1048576 এর উপরে তুলতে পারব না 4 যদি আমি 1048577 সীমাবদ্ধ করে রাখি তবে এটি কেবল উপেক্ষা করা হবে।
কি কারণ?
সিস্টেম বি
সিস্টেমে 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 সীমা রয়েছে এবং 99/999999 / proc / sys / fs / ফাইল-সর্বাধিক সীমা রয়েছে।
তবে এখানে সীমা 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
:)