【发布时间】:2011-10-01 05:33:21
【问题描述】:
Mac OS X (10.6) 中每个进程的最大打开文件数是多少?
ulimit 表示比 256,sysctl 表示 10240,但我的测试程序可以创建 9469(在 gdb 下),10252(没有 gdb)文件..
【问题讨论】:
Mac OS X (10.6) 中每个进程的最大打开文件数是多少?
ulimit 表示比 256,sysctl 表示 10240,但我的测试程序可以创建 9469(在 gdb 下),10252(没有 gdb)文件..
【问题讨论】:
在我的 mac 上运行一些 python 脚本时遇到了一个相关错误。该错误抱怨打开文件的限制。
看到ulimit -n告诉我256,我真的很惊讶。
如果您最终解决了这个问题,下一步合乎逻辑的步骤是增加限制。
为了补充 Dmitry 的回答,我将链接 following gist with the solution(在 Mac OSX Catalina 上为我工作)。
上面链接的食谱将指导您如何增加限制。
/Library/LaunchDaemons/limit.maxfiles.plist
/Library/LaunchDaemons/limit.maxproc.plist
应用load.sh 和系统rebot 后,我得到ulimit -n 说524288。这让python脚本很高兴。 GL!
【讨论】:
现在很清楚了。
ulimit 命令是在 shell 中构建的。您可以使用 ulimit -n 命令为当前 shell(以及从该 shell 启动的每个程序)设置 maxfiles。
10252 个文件 - 这是我的错误。当我从 shell 启动我的测试程序时,最多打开 253 个文件 (253 + stdin + stdout + stderr = 256)。
9469 个文件 - 我的测试程序在 Xcode 下运行的结果,似乎 Xcode 在运行程序之前设置了 tha maxfiles。
ulimit不是系统范围的设置,这就是为什么要为maxfiles设置系统范围的值,你必须使用launchctl(系统中的第一个进程,尝试'launchctl limit')或sysctl。
答案是 256 个文件。
【讨论】: