centos 系列之系统001:快速获取系统版本信息

查看centos6/7系统版本

要写一个centos系统的初始化脚本,但是centos6和centos7版本有很多命令都不相同,所以为了让脚本在两个版本之间都可以使用,就需要对centos系统版本进行判断。通过查找各种资料,我发现基本有下面几种查看系统版本的方法:

方法一:通过 lsb_release -a

这种方式不支持centos 7.3 以后的版本查看,因为centos7.3里没有lsb_release命令 ,所以不满足要求。

1
2
3
4
5
6
[root@centos6 ~]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.9 (Final)
Release: 6.9
Codename: Final

方法二:通过 cat /etc/os-release

这种方式不支持 centos 6 ,因为 centos 6 没有 /etc/os-release 这个文件,所以这个方法也不适用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@centos7 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

方法三:通过 cat /etc/redhat-release

这个方法在两个版本中都可以使用,可以使用sed命令取版本的值,但是过于复杂,不推荐

1
2
3
4
5
6
7
8
9
[root@centos6 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

[root@centos6 ~]# cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'
6
[root@centos7 ~]# cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'
7

方法四:通过 rpm -q centos-release

这个命令在两个版本中显示结果格式一致,所以我们可以使用cut很轻松的取系统版本的值。

1
2
3
4
5
6
7
8
9
[root@centos6 ~]# rpm -q centos-release
centos-release-6-9.el6.12.3.x86_64
[root@centos7 ~]# rpm -q centos-release
centos-release-7-3.1611.el7.centos.x86_64

[root@centos6 ~]# rpm -q centos-release|cut -d- -f3
6
[root@centos7 ~]# rpm -q centos-release|cut -d- -f3
7

坚持原创技术分享,您的支持将鼓励我继续创作!