在Unix / Linux平台上查找os名称和版本的最佳方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Unix / Linux平台上查找os名称和版本的最佳方法相关的知识,希望对你有一定的参考价值。
我需要在Unix / Linux平台上找到操作系统名称和版本。为此,我尝试了以下内容:
lsb_release
实用程序/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”
另一答案
使用perl和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