如何确定CentOS版本?


125

如何在不访问任何图形界面的情况下确定CentOS服务器的版本?我已经尝试了几个命令:

# cat /proc/version
Linux version 2.6.18-128.el5 (mockbuild@hs20-bc1-7.build.redhat.com)
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) …

# cat /etc/issue
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

但哪个是正确的:4.1.2-4 /proc/version或5.3 /etc/issue呢?

Answers:


43

从中可以看到/etc/issue,您正在使用CentOS 5.3。(之所以说是Red Hat,是因为CentOS是基于RH来源的,并且某些软件会检查/etc/issue以标识正在使用的发行版;因此,如果将其更改为CentOS,它们将失败。)

4.1.2-4/proc/version指的版本,gcc用于构建内核的C编译器。


3
我将添加,您可以使用uname -a检测到的是32位还是64位兼容文件。
Fedir RYKHTIK

15
在CentOS 7上,'cat / etc / issue'产生了gobbledygook: \S Kernel \r on an \m
Urhixidur

9
正确答案应该是h3rrmiller ...给出的答案cat /etc/*elease/etc/issue通常是由一个组织的MOTD /免责声明替换
batfastad

/etc/issue文件显示它是RHEL,而不是CentOS。
迈克尔·汉普顿

161

在CentOS之类的情况下,实际版本通常放在/etc/*elease

cat /etc/*elease

授予该文件通常会保留整个OS的版本减去内核(因为您可以选择加载哪个版本)。该文件将具有与/ etc / issue相同的信息,但使用CentOS而不是RedHat


1
cat / etc / * release也将起作用,并且您不会遗漏您正在寻找的内容;)因为elease并不总是容易猜到的。*一次只能是一个或多个项目,一无所有。谢谢,我总是忘记获取发行版的方法。
erm3nda 2015年

9
我之所以不使用“ R”,是因为在某些情况下,“发行版”中的“ R”是大写的。
h3rrmiller 2015年

只是说,ls /etc/*elease在我的系统上执行即可/etc/centos-release /etc/redhat-release /etc/system-release。因此,我从所有这些猜测中都认为发行文件会放入其中/etc/*-release-但可能会有一些大写字母。
mwfearnley 2015年

2
这是对的。我发现许多站点/etc/issue都被MOTD或安全性免责声明覆盖,Banner可以在以下选项中使用该选项sshd_config
batfastad 2015年

cat /etc/*os-release应该为CentOS产生更多目标结果,并且仍然可以在Ubuntu和其他平台上使用。
webaholik

19

查找CentOS的主要版本(5或6等)的最可靠方法是:

# rpm -q --queryformat '%{VERSION}' centos-release
6

对于RHEL,请执行以下操作:

# rpm -q --queryformat '%{RELEASE}' redhat-release-server | awk -F. '{print $1}'
7

查找没有 lsb_release或其他工具的版本的唯一可移植方式是:

# grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release
6.5

3
可以简化为:cat /etc/redhat-release | grep -o '[0-9]\.[0-9]'
Dave Johansen

1
+1 rpm -q centos-release是我尚未找到的在较旧的CentOS5发行版上获得次要版本的唯一方法,其中/ etc / redhat-release仅包含主要版本。感谢您的提示。
PolyTekPatrick

1
要获取主要版本:cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)'
Rockallite

1
只是好奇:为什么用“猫文件| grep模式”而不是“ grep模式文件”?
barrycarter

是的,从外壳程序历史中挖掘出了这一点,并得以纠正。固定。
lzap

13

您可以通过调用以下命令来确定它:

hostnamectl

将返回以下内容:

Static hostname: mgbcctli01
     Icon name: computer-vm
       Chassis: vm
    Machine ID: de14d80a0900427894dbcf6137e058e7
       Boot ID: 6865f9839c064bc9be32281d0f262cc8
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
   CPE OS Name: cpe:/o:centos:centos:7
        Kernel: Linux 3.10.0-514.2.2.el7.x86_64
  Architecture: x86-64

您也可以使用rpm查找有关CentOS版本的详细信息:

rpm --query centos-release

在我的情况下将返回:

centos-release-7-3.1611.el7.centos.x86_64

1
hostnamectl仅返回主要发行版号
fpmurphy

1
没错,使用rpm,您可以获得详细的版本
hd84335

6

正确的方法是lsb_release -d


8
在CentOS 7上:lsb_release:找不到命令。
Dereckson '16

百胜安装redhat-lsb-core ...
gena2x

7
可以,但是我的意思是:我不确定必须安装新软件包来获取当前版本是否有价值。
Dereckson

1
如果您希望某个命令能够在多个发行版中实现,那么仍然值得安装。
gena2x


3

可以/etc在文件内的位置找到它os-release。因此输入:

cat /etc/os-release

是否将其反向移植到CentOS 5或6?如果没有的话,那么这对
将来

CentOS从CentOS 7开始使此功能可用-我没有看到反向移植。
webaholik

3

真实可靠的(短)的方式获得的任何的CentOS或RHEL是主要版本:

rpm -E %{rhel}

将为您提供例如67或的值8(现在RHEL 8已经退出)。


2

运行rpm --eval '%{centos_ver}'以获取主要版本的centos。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.