代码之家  ›  专栏  ›  技术社区  ›  Trent

如何解决Bazaar中的“打开的文件太多”错误?

  •  0
  • Trent  · 技术社区  · 16 年前

    我在Max OS X 10.6.2上使用Bazaar V2.0.1

    当我在移动大量文件/目录(超过10000个)后执行提交时,会收到以下错误消息:

    BZR:错误:[errno 24]打开:太多 打开文件:

    我的第一个工作是将提交分成几个子集。然而,这并不理想,我担心可能会有一个点,一个改变(不能分解成子集合)会给我同样的错误。

    [更新]

    在做了一些研究之后,我发现:

    看起来像:

    errno 24“打开:打开的文件太多”

    是一个python错误。

    根据 this blog post ,打开的文件数限制可以从python脚本中更改为 resource.setrlimit .但是,我确实在寻找一种方法来更改默认值,这样Bazaar就可以使用更高的值自动运行(顺便说一句,我的默认设置是2560)。

    根据苹果的文档 setrlimit 系统调用有一个sh内置命令调用 文件描述符 可用于更改设置。从shell启动的任何进程都将继承该值。

    我目前的工作是增加 ulimit -n 10240 到 ~/轮廓 . 我跑的时候走这边 bzr commit 从shell可以打开10240个文件。我选择了10240个文件,因为这是Mac OS X中用户进程允许的最大值。

    看来巴扎不应该同时打开那么多文件。我担心如果我移动更多的文件,这可能会回来咬我。这是集市上的虫子吗?还有什么我能做的吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tobu    16 年前

    尝试 ulimit -n 1024 (或更多)在运行Bazaar之前,如果您的shell支持它(它是一个内置的bash)。

    厄运!编辑:你可以把它放在你的 ~/.profile 如果有,或者 ~/.bash_profile .

        2
  •  3
  •   Kaleb Pederson    16 年前

    你可以使用 lsof 查看所有打开的文件。您可以尝试对bazaar进程的pid进行grepping,或者监视打开的文件的数量。

    请注意,查看与您的情况相关的所有文件/进程可能需要根目录,也可能不需要根目录。