在 Linux 运维和开发中,确认系统版本是排查问题、安装软件或配置环境的第一步。虽然 CentOS 和 Ubuntu 都属于 Debian/RedHat 系的大类,但它们的包管理器和文件系统结构不同,查看方式也有细微差别。
以下是最常用、最可靠的方法,按推荐程度排序:
一、 CentOS 系列(包括 CentOS Stream, Rocky Linux, AlmaLinux)
CentOS 基于 RHEL(Red Hat Enterprise Linux),其核心标识文件通常位于 /etc/ 目录下。
1. 最推荐:cat /etc/os-release
这是目前最标准、兼容性最好的方法,适用于几乎所有现代 Linux 发行版(包括较新的 CentOS 7+ 和所有主流发行版)。
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)"
...
重点看 PRETTY_NAME 和 VERSION_ID。
2. 传统方法:cat /etc/redhat-release
如果系统是较老的 CentOS 6 或更早版本,或者你只想快速看一眼主版本号,这个命令最直接。
cat /etc/redhat-release
输出示例:
CentOS Linux release 7.9.2009 (Core)
3. 通用内核信息:uname -a
如果你需要知道的是内核版本而不是发行版版本(比如调试驱动问题时),用这个。
uname -r
注意:
uname显示的是内核版本(如 3.10.0-1160.el7.x86_64),不是操作系统版本(如 CentOS 7.9)。两者不要混淆。
二、 Ubuntu 系列(包括 Debian, Linux Mint 等)
Ubuntu 基于 Debian,其版本信息存储在 /etc/lsb-release 和 /etc/os-release 中。
1. 最推荐:cat /etc/os-release
同上,这是跨发行版的黄金标准。
cat /etc/os-release
输出示例:
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.3 LTS"
...
2. Ubuntu 特有:lsb_release -a
这是 Debian/Ubuntu 系特有的命令,需要安装 lsb-release 包(默认已装)。它能提供更友好的格式化输出。
lsb_release -a
输出示例:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
提示:
Release字段就是你要找的版本号(如 22.04),Codename是代号(如 jammy),对某些依赖特定代号的软件很有用。
3. 快速查看:hostnamectl
如果你安装了 systemd(现代 Linux 都默认有),这个命令可以一次性看到主机名、操作系统和内核信息。
hostnamectl
输出示例:
Static hostname: ubuntu-server
Icon name: computer-vm
Chassis: vm
Machine ID: abc123def456
Boot ID: xyz789
Operating System: Ubuntu 22.04.3 LTS
Kernel: Linux 5.15.0-91-generic
Architecture: x86-64
三、 避坑指南 & 常见问题
-
为什么不用
cat /etc/issue?- 这个文件通常是登录前的欢迎信息,可能被自定义修改过,不一定反映真实系统版本。不推荐作为依据。
-
CentOS 7 vs CentOS 8/Stream:
- CentOS 7 仍使用
yum,而 CentOS 8 及以后(包括 Stream)转向dnf。但查看版本的命令不变。 - 如果你看到
VERSION_ID="8"或"9",说明是较新版本;如果是7,则是经典版。
- CentOS 7 仍使用
-
云服务器场景(阿里云/腾讯云/AWS):
- 云厂商的镜像可能经过裁剪,某些工具(如
lsb_release)可能未预装。此时cat /etc/os-release是最稳妥的选择,因为它是 systemd 的一部分,几乎不会缺失。
- 云厂商的镜像可能经过裁剪,某些工具(如
-
如何判断是 32 位还是 64 位?
- 使用
arch或uname -m:uname -m # 输出 x86_64 表示 64 位 # 输出 i686/i386 表示 32 位
- 使用
总结
| 系统类型 | 最推荐命令 | 备用命令 | 关键输出字段 |
|---|---|---|---|
| CentOS/RHEL | cat /etc/os-release |
cat /etc/redhat-release |
PRETTY_NAME, VERSION_ID |
| Ubuntu/Debian | cat /etc/os-release |
lsb_release -a |
PRETTY_NAME, Release |
一句话建议:不管什么系统,先试 cat /etc/os-release,99% 的情况都能搞定。
云技术博客