CentOS和Ubuntu系统中查看主机版本的常用命令有哪些?

在 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-releaserpm -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/issuecat /etc/issue.net 登录前显示的欢迎信息(如 Ubuntu 22.04.4 LTS n l),含版本号但格式较简略,可能含转义符。 ⚠️ 仅作参考,非结构化
apt list --installed | grep ubuntu-release 查看 ubuntu-release-infoubuntu-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/issuelsb_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 脚本? 😊