在Unix / Linux平台上查找os名称和版本的最佳方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Unix / Linux平台上查找os名称和版本的最佳方法相关的知识,希望对你有一定的参考价值。

我需要在Unix / Linux平台上找到操作系统名称和版本。为此,我尝试了以下内容:

  1. lsb_release实用程序
  2. /etc/redhat-release或特定文件

但它似乎不是最佳解决方案,因为LSB_RELEASE不再支持RHEL 7。

有什么方法可以在任何Unix或Linux平台上运行?

任何帮助将不胜感激。

答案

这适用于所有Linux环境。

#!/bin/sh
cat /etc/*-release

在Ubuntu中:

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"

或12.04:

$ cat /etc/*-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
NAME="Ubuntu"
VERSION="12.04.4 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
VERSION_ID="12.04"

在RHEL中:

$ cat /etc/*-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Red Hat Enterprise Linux Server release 6.5 (Santiago)

或使用此脚本:

#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux
# Distribution.

OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`

GetVersionFromFile()
{
    VERSION=`cat $1 | tr "
" ' ' | sed s/.*VERSION.*= // `
}

if [ "${OS}" = "SunOS" ] ; then
    OS=Solaris
    ARCH=`uname -p` 
    OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
    OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
    KERNEL=`uname -r`
    if [ -f /etc/redhat-release ] ; then
        DIST='RedHat'
        PSUEDONAME=`cat /etc/redhat-release | sed s/.*(// | sed s/)//`
        REV=`cat /etc/redhat-release | sed s/.*release // | sed s/ .*//`
    elif [ -f /etc/SuSE-release ] ; then
        DIST=`cat /etc/SuSE-release | tr "
" ' '| sed s/VERSION.*//`
        REV=`cat /etc/SuSE-release | tr "
" ' ' | sed s/.*= //`
    elif [ -f /etc/mandrake-release ] ; then
        DIST='Mandrake'
        PSUEDONAME=`cat /etc/mandrake-release | sed s/.*(// | sed s/)//`
        REV=`cat /etc/mandrake-release | sed s/.*release // | sed s/ .*//`
    elif [ -f /etc/debian_version ] ; then
        DIST="Debian `cat /etc/debian_version`"
        REV=""

    fi
    if [ -f /etc/UnitedLinux-release ] ; then
        DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "
" ' ' | sed s/VERSION.*//`]"
    fi

    OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"

fi

echo ${OSSTR}
另一答案

以下命令很适合我。它为您提供操作系统名称和版本。

lsb_release -a
另一答案

“lsb_release”命令提供某些Linux标准库和特定于分发的信息。因此,使用以下命令,我们可以获得操作系统名称和操作系统版本。

“lsb_release -a”

另一答案

使用Linux::Distribution,这是解决旧问题最干净的解决方案:

#!/bin/sh

perl -e '
    use Linux::Distribution qw(distribution_name distribution_version);

    my $linux = Linux::Distribution->new;
    if(my $distro = $linux->distribution_name()) {
          my $version = $linux->distribution_version();
          print "you are running $distro";
          print " version $version" if $version;
          print "
";
    } else {
          print "distribution unknown
";
    }
'
另一答案

在每个发行版中它都有不同的文件,所以我写了最常见的文件:

---- CentOS Linux distro
`cat /proc/version`
---- Debian Linux distro
`cat /etc/debian_version`
---- Redhat Linux distro
`cat /etc/redhat-release` 
---- Ubuntu Linux distro
`cat /etc/issue`   or   `cat /etc/lsb-release`

在最后一个/ etc / issue中不存在,所以我尝试了第二个,它返回了正确的答案

另一答案

使用以下命令

lsb_release -irc

我的操作系统是CentOs并且让我喜欢

Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core

以上是关于在Unix / Linux平台上查找os名称和版本的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

PythonWindows, Linux/UNIX, Mac OS X 下安裝 Python

Linux与Unix有什么差异

理解Unix可执行文件

linux的内核版本的介绍

如何通过LoadRunner监控Linux和Unix操作系统的资源状况

查找 Linux 发行版名称版本