【问题标题】:fork: Resource temporarily unavailable when calling rvm from a shell script, but rvm works fine by itselffork:从 shell 脚本调用 rvm 时资源暂时不可用,但 rvm 本身可以正常工作
【发布时间】:2011-03-05 02:57:06
【问题描述】:

我想在不同的项目之间切换,其中一部分是通过rvm 更改红宝石和宝石组。 RVM 本身对我来说非常有用,但是当我将它的调用放入 shell 脚本时,我得到:

fork:资源暂时不可用

这是 rvm info 的输出。如果有任何其他有用的信息可以提供,请告诉我。

$ rvm info

ruby-1.9.2-p136@pax-arachnae:

  system:
    uname:       "Darwin savoy.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386"
    bash:        "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"
    zsh:         "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"

  rvm:
    version:      "rvm 1.0.9 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.2p136"
    date:         "2010-12-25"
    platform:     "x86_64-darwin10.6.0"
    patchlevel:   "2010-12-25 revision 30365"
    full_version: "ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]"

  homes:
    gem:          "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae"
    ruby:         "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136"

  binaries:
    ruby:         "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136/bin/ruby"
    irb:          "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136/bin/irb"
    gem:          "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136/bin/gem"
    rake:         "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae/bin/rake"

  environment:
    PATH:         "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae/bin:/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@global/bin:/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136/bin:/Users/rfzabick/.rvm/bin:/usr/local/bin:/Applications/Emacs.app/Contents/MacOS:/Applications/MacVim.app/Contents/MacOS:/usr/local/mysql/bin:/Developer/usr/bin:/Users/rfzabick/.ec2/ec2-api-tools-1.3-62308/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/Applications/Google Chrome.app/Contents/MacOS"
    GEM_HOME:     "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae"
    GEM_PATH:     "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae:/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@global"
    BUNDLE_PATH:  "/Users/rfzabick/.rvm/gems/ruby-1.9.2-p136@pax-arachnae"
    MY_RUBY_HOME: "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136"
    IRBRC:        "/Users/rfzabick/.rvm/rubies/ruby-1.9.2-p136/.irbrc"
    RUBYOPT:      ""
    gemset:       "pax-arachnae"

【问题讨论】:

    标签: ruby macos rvm


    【解决方案1】:

    我在 shell 脚本中使用 RVM,它工作正常。可以解释为什么你不能这样做的一件事是你的版本太旧了。当前版本是 1.2.8,而您使用的是 1.0.9。

    RVM 经常更新,因此最好至少每两周更新一次。在当前的 RVM 中,我们将使用 rvm get head 进行更新,但我不确定在 1.0.9 中是否相同。如果没有尝试rvm help update

    【讨论】:

    • 很高兴有帮助。我认为这是一个很棒的工具。
    • 天哪,有没有。 RVM 摇滚。
    【解决方案2】:

    fork:资源暂时不可用

    该错误是由 ulimit 设置的当前 shell 资源限制引起的(检查 ulimit -a)。因此,您可以在另一个 shell 中尝试,也可以使用 ulimit 命令增加资源,该命令控制 shell 可用的资源以及它在操作系统上创建的进程。

    要增加限制,请尝试运行:

    ulimit -Sn unlimited && ulimit -Sl unlimited
    

    将软限制提高到硬限制,或者:

    ulimit -l unlimited
    ulimit -n 10240 
    

    将进程的最大大小设置为无限制,打开文件的最大数量为10240。

    请参阅:help ulimit 了解更多信息。

    要增加进程限制,请使用以下命令:

    sudo launchctl limit maxproc 1024 2048
    

    另请参阅:How to persist ulimit settings in OSX?

    【讨论】:

      【解决方案3】:

      刚刚遇到问题并在 red hat 5 上解决了它出现错误:fork:资源暂时不可用

      我们所做的研究发现: 1. cron 运行脚本没有完全以用户身份登录。因此,如果在 /etc/profile 中发出 ulimit 命令,它们将不会在 cron 脚本运行时运行。

      1. 在具有许多数据库的机器上处理用户 oracle 时,我们发现 ulimit -u 会导致问题。我们有 800 个 oracle 进程正在运行(使用 ps -ef|grep oracle|wc -l 显示),但是 bash shell 可以在 ulimit -u 2020 下正常工作,但在 ulimit -u 2010 下会失败。

      原来进程限制一定是用词不当。还必须包括线程。此命令显示的数字更接近我们对 ulimit -u 所需的经验:ps -eLf|grep oracle|egrep -v root|wc -l

      所以底线是,确保在处理 oracle 等工作负载时将 ulimit -u 设置得足够高。

      【讨论】:

        【解决方案4】:

        我也遇到了同样的错误,但对我来说,我的 rvm 搞砸了,使用的是 ruby​​ 1.8.7 而不是 1.9.3。我做了 rvm 要求,它警告了我。改回 1.9.3,一切又开始工作了。

        【讨论】:

          【解决方案5】:

          我在 OSX 10.7 上使用系统 ruby​​ 1.8.7 时遇到了同样的问题。我正在使用 RVM,所以只需切换到不同的 ruby​​ 1.9.2-p290 即可解决问题。 (反正我不会在任何项目中使用 1.8.7)。

          【讨论】:

            猜你喜欢
            • 2018-05-11
            • 2012-03-10
            • 2014-12-28
            • 1970-01-01
            • 2012-08-18
            • 1970-01-01
            • 1970-01-01
            • 2018-03-03
            • 2012-05-01
            相关资源
            最近更新 更多