在 CentOS 和 Ubuntu 系统中,查看主机(操作系统)版本的常用命令如下,分为通用推荐命令和系统特有命令两类,并附说明与注意事项:
✅ 一、通用推荐(跨发行版、最可靠)
| 命令 | 说明 | 是否推荐 |
|---|---|---|
cat /etc/os-release |
最标准、最权威的方式(遵循 Freedesktop.org 规范),输出包含 NAME, VERSION, ID, VERSION_ID, PRETTY_NAME 等字段。所有现代 Linux 发行版(包括 CentOS 7+/8+/Stream、Ubuntu 16.04+)均支持。 |
✅ 强烈推荐 |
hostnamectl |
systemd 系统专用(CentOS 7+/Ubuntu 16.04+ 默认启用),显示操作系统、内核、主机名等信息,其中 Operating System: 行即为 OS 版本。 |
✅ 推荐(需 systemd) |
✅ 示例输出(/etc/os-release):
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.4 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy
🐧 二、按系统区分的常用命令
▪ CentOS/RHEL 系统(含 Rocky/AlmaLinux)
| 命令 | 说明 | 备注 |
|---|---|---|
cat /etc/redhat-release |
传统方式,简洁明了(如 CentOS Linux release 8.5.2111)。⚠️ CentOS Stream 9+ 或 RHEL 9+ 可能不提供此文件(已弃用,推荐用 /etc/os-release)。 |
⚠️ 兼容性下降,仅作补充 |
rpm -q centos-release 或 rpm -q rocky-release / alma-release |
查看发行版元数据包版本(如 centos-release-8.5-1.2111.el8)。适用于 RPM 系统。 |
✅ 有效但略冗长 |
lsb_release -a |
需安装 redhat-lsb-core(CentOS)或 lsb-release(Ubuntu),输出 LSB 信息。⚠️ 不推荐作为首选:LSB 已逐渐被弃用,部分最小化安装未预装。 |
❌ 次选(需确认是否安装) |
▪ Ubuntu/Debian 系统
| 命令 | 说明 | 备注 |
|---|---|---|
lsb_release -a |
Ubuntu 默认预装,输出清晰(含 Distributor ID、Description、Release、Codename)。 | ✅ Ubuntu 上常用且可靠 |
cat /etc/issue 或 cat /etc/issue.net |
登录前显示的欢迎信息(如 Ubuntu 22.04.4 LTS n l),含版本号但格式较简略,可能含转义符。 |
⚠️ 仅作参考,非结构化 |
apt list --installed | grep ubuntu-release |
查看 ubuntu-release-info 或 ubuntu-standard 包(不直接显示版本,不推荐)。 |
❌ 不实用 |
🔍 三、快速判断当前系统类型 + 版本(一行命令)
# 同时获取发行版 ID 和版本号(兼容 CentOS/Ubuntu)
awk -F= '/^(NAME|VERSION_ID)=/ {gsub(/"/, "", $2); printf "%s ", $2} END{print ""}' /etc/os-release
# 或更简洁(推荐):
. /etc/os-release && echo "$PRETTY_NAME"
⚠️ 注意事项
- ❌ 避免使用
uname -r:它只显示内核版本(如5.15.0-101-generic),不是操作系统版本。 - ❌
cat /proc/version同样只反映内核及编译信息,非发行版版本。 - ✅ 所有现代系统(CentOS 7+/Ubuntu 16.04+)务必优先使用
/etc/os-release—— 这是 LSB 和 systemd 官方推荐的标准途径。 - 若系统极老(如 CentOS 5/6、Ubuntu 14.04 以前),可考虑
cat /etc/issue或lsb_release -a(需先apt-get install lsb-release/yum install redhat-lsb-core)。
✅ 总结:一句话建议
无论 CentOS 还是 Ubuntu,请统一使用
cat /etc/os-release查看操作系统版本;若需简洁输出,用. /etc/os-release && echo "$PRETTY_NAME"。
需要我帮你写一个自动识别并格式化输出的 shell 脚本? 😊
PHPWP博客