मैंने इसे विभिन्न GNU / Linux संस्थापनों पर परखा:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
सिस्टम ए और डी
मैंने जो पहली सीमा हिट की है, वह 1024 है। इसे आसानी से /etc/security/limits.conf में डालकर उठाया जाता है:
* hard nofile 1048576
और फिर चलाएं:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
अब परीक्षण 1048576 पर जाता है।
हालाँकि, ऐसा लगता है कि मैं इसे 1048576 से ऊपर नहीं बढ़ा सकता हूँ। अगर मैंने 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 सीमाएं हैं ।conf और 99999999 में / proc / sys / fs / file-max।
लेकिन यहाँ की सीमा 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
)