修复ulimit:打开文件:无法修改限制:不允许操作


13

我在不同的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

Answers:


4

检查是否/etc/ssh/sshd_config包含:

UsePAM=yes

其中/etc/pam.d/sshd包含:

session    required   pam_limits.so

仍然无法回答为什么最大1048576。

1048576似乎是每个进程。因此,通过多个过程可以克服此限制。


4
如果这确实是您自己的问题的解决方案,那么我认为最好在问题与上述解决方案之间建立联系。
杰夫·谢勒

2
回复:1048576(= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2,仅供参考)。这里的答案可能有一些相关信息:stackoverflow.com/a/1213069/2320823
Saladi

1
ssh与它有什么关系?
利纳斯(Linas)'18

我同意@Linas。抱歉,我认为答案和问题之间的联系不清楚。
Time4Tea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.