2012-08-01 55 views
0

我正在读一本书“Working with Unix Processes”,它使用ruby来解释unix/linux进程。这是我第一次使用ruby。我尝试了一个例子来获取进程的资源限制。Ruby IRB - 不能做Process.getrlimit

irb(main):001:0> Process.getrlimit(:CORE) 
Errno::EINVAL: Invalid argument - getrlimit 
    from (irb):1:in `getrlimit' 
    from (irb):1 
    from :0 


irb(main):004:0> Process.getrlimit() 
ArgumentError: wrong number of arguments (0 for 1) 
    from (irb):4:in `getrlimit' 
    from (irb):4 
    from :0 

但我似乎无法得到“getrlimit”承认(虽然它说我有错误的参数数目,如果我不提供任何参数)。在Google或SO上没有发现任何内容。试过:NOFILE,:CORE等。有什么我需要包括/要求getrlimit工作。环境:

Ubuntu 11.04 32 bit. Kernel 3.0.0-14 
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux] 
irb 0.9.5(05/04/13) 

问候

回答

0

对不起..没关系。看来IRB运行的是之前版本的红宝石(1.8.7),它以某种方式不支持getrlimit(尽管根据谷歌上的所有帐户,它应该已经工作)。我已将红宝石升级到1.9.1,但没有将/ usr/bin/irb中的链接更新到/usr/bin/irb1.9.1。所以IRB还在运行Ruby 1.8.7。将irb的软链接更新到v1.9.1后,getrlimit正在运行。

+0

安装多个Ruby版本时,请考虑使用版本管理器,如RVM(http://rvm.io)或rbenv(https://github.com/sstephenson/rbenv/)。不建议更改系统的本机安装。 – Amir 2012-08-01 05:09:10

+0

对于Ruby 1.8,正确的语法是'Process.getrlimit(Process :: RLIMIT_CORE)'。 – Casper 2012-08-01 05:26:59

+0

您应该将答案标记为已接受的答案。 – 2012-08-01 10:53:18