【问题标题】:How can I get OS and OS ARCH information in Ruby?如何在 Ruby 中获取 OS 和 OS ARCH 信息?
【发布时间】:2015-12-14 06:33:52
【问题描述】:

在 Ruby 脚本中,我想获取操作系统信息,不仅是 Linux,还包括 32 位或 64 位。

那是因为我的程序将在多个 Linux 平台上运行。它调用了第三方工具,该工具有子文件夹:lin32lin64,我需要根据操作系统信息调用正确的版本。

【问题讨论】:

  • @Зелёный:这是一个非常有希望的副本,但是其中包含的答案不包括“架构”(x86/x64)部分。如果有任何实际尝试,他们大多会讲述与此处无关的 Ruby 编译版本(您可以在 64 位操作系统上运行 32 位 ruby​​,在这种情况下,OP 需要获得 '64' 响应)
  • 我想向您指出RbConfig 的文档,但不幸的是,它似乎完全没有文档。不过,使用RbConfig 是正确的答案,前提是您可以弄清楚如何 使用它。

标签: ruby


【解决方案1】:

在 Ruby 中,您可以使用 RUBY_PLATFORM 常量。此常量生成操作系统和内核位级别的基本名称。 例如。在 irb 中:

1.9.3-p392 :001 > RUBY_PLATFORM
=> "x86_64-linux" - Linux based OS with 64-bit
=> "i686-linux" - Linux based OS with 32-bit

【讨论】:

    【解决方案2】:

    另外,您可以尝试以下方法:

    ver = `getconf LONG_BIT`
    

    ver = `arch`
    

    【讨论】:

      【解决方案3】:

      您可以使用 RUBY_PLATFORM 常量

      irb(main):001:0> RUBY_PLATFORM
      => "i686-linux"
      

      【讨论】:

      • 这不会告诉他操作系统版本是什么,但会告诉他Ruby是在什么模式下编译的。对于 OS=x86 没有区别,但是在 OS=x64 上,您可以运行 x86 Ruby,并且 sn-p 将返回 x86 而不是 x64
      【解决方案4】:

      由于您指的是 linux,请使用uname -m,如下所述:How to determine whether a given Linux is 32 bit or 64 bit?

      忽略底部的“CPU”部分。因为要运行程序,所以需要内核架构:

      irb:(main):001:0> `uname -m`
      => "x86_64"
      
      x86_64 ==> 64-bit kernel
      i686   ==> 32-bit kernel
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多