我在不同的GNU / Linux安装上对此进行了测试:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
系统A和D
我遇到的第一个限制是1024。可以通过将其放入/etc/security/limits.conf来轻松提高它:
* hard nofile 1048576
然后运行:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
现在测试进行到1048576。
但是,看来我无法将其提高到1048576以上。如果我将1048577放入limits.conf中,将被忽略。
是什么原因造成的?
系统B
在系统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
这个限制来自哪里?
系统C
该系统的limits.conf和/ proc / sys / fs / file-max中的限制为1048576,99999999。
但是这里的限制是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
)
1
我有完全相同的问题,限制似乎是1048576。如果我过去,则会收到以下错误:bash:ulimit:打开文件:无法修改限制:不允许的操作
—
Abbadon
嗨,我有一个非常相似的问题。我认为提供有关这些不同系统的更多详细信息将非常有帮助。
—
Time4Tea