查看centos6/7系統版本
要寫一個centos系統的初始化腳本,但是centos6和centos7版本有很多命令都不相同,所以為了讓腳本在兩個版本之間都可以使用,就需要對centos系統版本進行判斷。
通過查找各種資料,我發現基本有下面幾種查看系統版本的方法:
方法一:
lsb_release -a
[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
但是,centos7.3里沒有lsb_release命令,所以這種方法無法滿足我的需要。
方法二:
cat /etc/os-release
[root@centos7 app]# 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"
但是,centos6里沒有這個文件,所以這個方法也不適用。
方法三:
cat /etc/redhat-release(/etc/centos-release)
[root@centos6 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@centos7 app]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
可以看到,這個方法在兩個版本中都可以使用,可以使用sed命令取版本的值
[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
[root@centos6 ~]# rpm -q centos-release
centos-release-6-9.el6.12.3.x86_64
[root@centos7 app]# rpm -q centos-release
centos-release-7-3.1611.el7.centos.x86_64
如上,這個命令在兩個版本中顯示結果格式一致,所以我們可以使用cut很輕松的取系統版本的值。
[root@centos6 ~]# rpm -q centos-release|cut -d- -f3
6
[root@centos7 ~]# rpm -q centos-release|cut -d- -f3
7
然后就可以在腳本中使用這個值判斷系統版本了。
