如何查明我正在使用的 RHEL 版本?

如何查明我正在使用的 RHEL 版本?

我工作的环境中,我们正在慢慢地将计算机从 Red Hat Enterprise Linux 5 过渡到 RHEL 6。

我需要一些脚本在 RHEL6 计算机上执行与当前在 RHEL5 计算机上执行的操作略有不同的操作。

务实的解决方案是在运行时检查并在 RHEL5 上运行一些命令,在 RHEL6 上运行其他命令,在两者上运行一些命令。

一个实际的例子是,我们正在使用环境模块,并且我.bashrc包含一行module load git,但在 RHEL6 计算机上此命令错误:

RHEL6 system, git should be installed - not loading module

查看模块文件,我发现以下代码:

set redhatrelease [eval exec "cat /etc/redhat-release"]
if { [regexp -nocase {release 6} $redhatrelease] } {
  puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n"
} else {
  ...
}

这似乎符合我的要求,但我希望能做得更短。

那么,在 bash 脚本中区分 RHEL5 和 RHEL6 最简单的方法是什么?

理想情况下,它应该在不同的主要版本中保持稳健,但可以容忍次要版本号的变化。

答案1

if grep -q -i "release 6" /etc/redhat-release
then
  echo "running RHEL 6.x"
fi

这将是我能想到的最简单的方法。

答案2

您也可以使用该lsb_release命令。如果您已经确定它是 RHEL,则获取主版本号的方法是:

majversion=$(lsb_release -rs | cut -f1 -d.)

答案3

major_version=$(rpm -q --queryformat '%{RELEASE}' rpm | grep -o [[:digit:]]*\$)

rpm -q --queryformat '%{RELEASE}' rpm打印类似的东西25.el7。然后只需取最后一位数字即可。在 RHEL 5、6、7 和 Fedora 24 上进行了测试。

正如其他人指出的,lsb-version可能无法安装。此外,至少有一个 RHEL5 系统未redhat-release-server安装该软件包。

答案4

这是获得此结果的另一种更精确的方法。 RHEL 中的内核包包含字符串“elN”,其中 N 代表操作系统的主要版本。因此,可以运行以下命令来识别 RHEL 的版本:

# uname -r | sed 's/^.*\(el[0-9]\+\).*$/\1/'

这将返回一个字符串“el5”、“el6”或“el7”,具体取决于给定主机上的匹配字符串。

相关内容