下边给出5种可靠方式检测CentOS版本,覆盖CentOS6/7/8与CentOSStream。所有命令均为可复制即用,并在每段后给出解释。

方式一:读取标准文件/etc/os-release(首选)

cat /etc/os-release

解释:/etc/os-release是systemd生态的统一规范文件,会显示NAME、VERSION_ID、PRETTY_NAME等关键信息。优点是通用、脚本友好。

要点:生产脚本可用source/etc/os-release&&echo$NAME$VERSION_ID做机读。优先级最高。

技巧二:读取传统发行文件(兼容旧版)

# 任一存在即用(不同版本路径可能不同)
cat /etc/centos-release
cat /etc/redhat-release

解释:在较旧的CentOS(如6/7)或兼容的RHEL系上,发行信息集中在上述文件。若找不到/etc/os-release,优先尝试这两项。

CentOS release detection commands_check CentOS version methods_centos如何版本

要点:输出一般包含“CentOSLinuxreleaseX.Y”等字样linux版qq,适配老环境。

方式三:用hostnamectl(systemd系列)

hostnamectl

解释:hostnamectl会展示主机信息centos如何版本,其中OperatingSystem一行即为发行版本。需systemd环境(CentOS7/8/Stream常见)。

要点:不止版本,能够顺便听到内核、架构。直观。️

方式四:通过RPM查询发行包(可机读)

# 查询发行版元包(不同版本可能是以下其一)
rpm -q centos-release
rpm -q redhat-release
rpm -q rocky-release  # 迁移到 Rocky 的机器也可这样查

解释:发行版版本一般由一个“release”包提供(如centos-release)。rpm-q可直接得出版本号,适宜脚本和合规审计。

要点:也可rpm-qicentos-release查看更详尽信息。适宜批量/手动化。

方式五:lsb_release(需额外组件)

# 首次使用需安装
sudo yum install -y redhat-lsb-core  # CentOS 7
# 或 dnf install -y redhat-lsb-core  # CentOS 8/Stream
lsb_release -a

解释:lsb_release是LSB插口centos如何版本,输出DistributorID、Release、Codename。在跨发行版脚本中很常见。

要点:如未预装需先安装redhat-lsb-core。通用但可能需装包。

对比与选择(vditor/Markdown表格)方式命令/文件是否需装包机读友好适用范围备注

方式一

/etc/os-release

CentOS release detection commands_check CentOS version methods_centos如何版本

CentOS7/8/Stream

官方规范,首选

方式二

/etc/{centos,redhat}-release

CentOS6/7/8

旧版兼容性强

方式三

hostnamectl

CentOS7/8/Stream

需systemd

方式四

rpm-q*-release

CentOS6/7/8/Stream

适宜审计与批量

方式五

lsb_release-a

CentOS7/8/Stream

跨发行脚本常用

CentOS release detection commands_centos如何版本_check CentOS version methods

一键机读示例(脚本化场景)

# 优先使用 os-release,否则回退到 redhat/centos-release
if [ -f /etc/os-release ]; then
  . /etc/os-release
  echo "${NAME} ${VERSION_ID}"
elif [ -f /etc/centos-release ]; then
  cat /etc/centos-release
elif [ -f /etc/redhat-release ]; then
  cat /etc/redhat-release
else
  rpm -q centos-release 2>/dev/null || rpm -q redhat-release 2>/dev/null || echo "Unknown"
fi

解释:

确诊流程图(vditor/Markdown|Mermaid)

flowchart TD
A[开始] --> B{存在 /etc/os-release?}
B -->|是| C[读取并输出 NAME/VERSION_ID]
B -->|否| D{存在 /etc/centos-release 或 /etc/redhat-release?}
D -->|是| E[cat 对应文件输出版本]
D -->|否| F{systemd 可用?}
F -->|是| G[hostnamectl 查看 Operating System]
F -->|否| H[rpm -q centos-release/redhat-release]
H --> I{成功?}
I -->|是| J[输出版本]
I -->|否| K[提示 Unknown/需人工确认]
C --> L[结束]
E --> L
G --> L
J --> L
K --> L

补充说明与最新注意事项小结

在手动化与可靠性优先的场景中,先查/etc/os-release,再回挪到传统release文件,必要时用hostnamectl/rpm兜底;跨发行脚本可加lsb_release作为补充。这5种方式互为补位linux开源软件,能覆盖绝大多数线带环境。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复