我在Max OS X 10.6.2上使用Bazaar v2.0.1
当我移动大量文件/目录(超过10,000)后执行提交时,我收到以下错误消息:
bzr:错误:[Errno 24]开放:太多了 打开文件:'。'
我的第一个解决方法是将提交分解为几个子集。然而,这并不理想,我担心可能会有一个变化(不能分解成子集)会给我同样的错误。
[更新]
经过一些研究后,我发现了这个:
看起来像:
Errno 24“open:打开文件过多”
是Python错误。
根据this blog post,可以使用resource.setrlimit
在Python脚本中更改打开的文件数限制。但是,我真的在寻找一种更改默认值的方法,因此Bazaar会自动以更高的值运行(BTW,看起来我的默认设置是2560)。
根据setrlimit系统调用的apple文档,有一个名为 ulimit 的内置命令,可用于更改设置。然后,从shell启动的任何进程都将继承此值。
我目前的解决方法是将ulimit -n 10240
添加到〜/ .profile 。这样,当我从shell运行bzr commit
时,它将能够打开10240文件。我选择了10240个文件,因为这是Mac OS X中用户进程允许的最大值。
似乎Bazaar不需要同时打开许多文件。我担心,如果我移动更多的文件,这可能会再次咬我。这是Bazaar的一个错误吗?还有什么我可以做的吗?
答案 0 :(得分:3)
您可以使用lsof
查看所有打开的文件。您可以尝试使用集市流程的pid或监控打开文件的数量。
请注意,您可能需要也可能不需要root用户来查看与您的情况相关的所有文件/进程。
答案 1 :(得分:2)
在运行bazaar之前尝试ulimit -n 1024
(或更多),如果你的shell支持它(它是内置的bash)。
金克斯!编辑:您可以将其放在~/.profile
(如果有)或~/.bash_profile
。