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

如何获取Linux发行版名称和版本?

  •  13
  • Dmitriy  · 技术社区  · 15 年前

    在Windows中,我读取注册表项 SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName 获取操作系统的全名和版本。

    但是在Linux中,代码

    struct utsname ver;
    uname(&ver);
    retVal = ver.sysname;
    

    返回字符串 linux 不是 Ubuntu 9.04 .

    如何获取Linux发行版的名称和版本?

    7 回复  |  直到 7 年前
        1
  •  31
  •   thekidder    15 年前

    尝试:

    cat /etc/lsb-release
    

    你也可以试试

    lsb_release -a
    

    或:

    cat /proc/version
    
        2
  •  5
  •   mda    12 年前
    lsb_release -ds ; uname -mr

    在我的系统上,通过bash(终端)提示生成以下内容:

    Ubuntu 10.04.4 LTS
    2.6.32-41-generic x86_64
    
        3
  •  4
  •   Paweł Hajdan    13 年前

    获取信息的目的是什么?

    如果您试图检测系统的某些功能或属性(例如,它是否支持某些SysCall或它是否具有某些库),而不是依赖lsb_版本的输出,您应该:

    • 尝试使用给定的功能并优雅地失败(例如,dlopen for libraries、syscall(2)for syscalls等)
    • 使其成为您的一部分。/配置检查(如果适用)(自动识别系统功能/属性的标准FOSS方法)

    请注意,上面的第一种方法适用,即使您的软件只是二进制的。

    一些代码示例:

      dl = dlopen(module_path, RTLD_LAZY);
      if (!dl) {
        fprintf(stderr, "Failed to open module: %s\n", module_path);
        return;
      }
    
      funcptr = dlsym(dl, module_function);
      if (!funcptr) {
        fprintf(stderr, "Failed to find symbol: %s\n", module_function);
        return;
      }
      funcptr();
    
      dlclose(dl);
    

    您甚至可以优雅地测试CPU操作码支持,例如 http://neugierig.org/software/chromium/notes/2009/12/flash-lahf.html , http://code.google.com/p/chromium/issues/detail?id=29789

        4
  •  4
  •   Freedom_Ben    10 年前

    我不确定我到底在追求什么,但我认为你只想在uname上显示“全部”标志:

    uname -a
    
        5
  •  3
  •   ollie314    11 年前

    尝试这种方法是一个有趣的方法,并且比LSB版本限制更少。

    $ cat /etc/*-release
    
        6
  •  2
  •   tchen    15 年前

    通常:

    cat /etc/issue
    
        7
  •  1
  •   johnthagen Matthew Scharley    7 年前

    /etc/os-release 至少在CentOS 7和Ubuntu 16.04上都有,这使得它比 lsb_release (不在Centos上)或 /etc/system-release (不在Ubuntu上)。

    $ cat /etc/os-release
    

    例子:

    NAME=Fedora
    VERSION="17 (Beefy Miracle)"
    ID=fedora
    VERSION_ID=17
    PRETTY_NAME="Fedora 17 (Beefy Miracle)"
    ANSI_COLOR="0;34"
    CPE_NAME="cpe:/o:fedoraproject:fedora:17"
    HOME_URL="https://fedoraproject.org/"
    BUG_REPORT_URL="https://bugzilla.redhat.com/"