下边给出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,优先尝试这两项。

要点:输出一般包含“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

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
跨发行脚本常用

一键机读示例(脚本化场景)
# 优先使用 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开源软件,能覆盖绝大多数线带环境。
