努力
加油

远程登录云服务器后怎么查看当前系统是基于Debian还是RHEL?

登录服务器后,判断底层操作系统是基于 Debian(及其衍生版如 Ubuntu)还是 RHEL(Red Hat Enterprise Linux 及其衍生版如 CentOS、AlmaLinux、Rocky Linux),最稳妥的方式是结合发行版标识文件和包管理器两个维度来确认。

以下是几种常用且准确的检测方法,按推荐程度排序:

方法一:查看发行版标识文件(最直观)

Linux 系统中通常有一个专门用于描述当前系统版本的文本文件。

1. 尝试读取 /etc/os-release
这是现代 Linux 发行版(Systemd 时代)通用的标准文件,几乎所有主流发行版都有。

cat /etc/os-release

观察输出中的 ID 和 PRETTY_NAME 字段:

  • 如果 ID 是 debian、ubuntu、linuxmint 等,则是 Debian 系。
  • 如果 ID 是 rhel、centos、almalinux、rocky、fedora 等,则是 RHEL 系。

2. 备选方案:查看 /etc/redhat-release
这是一个较老但依然广泛存在的文件,主要用于 RHEL 系系统。

cat /etc/redhat-release
  • 如果有输出内容(例如 CentOS Linux release 7.9.2009 (Core) 或 Red Hat Enterprise Linux Server release 8.4),那基本可以确定是 RHEL 系。
  • 如果提示“没有那个文件或目录”,则大概率不是 RHEL 系(可能是 Debian/Ubuntu 或其他)。

注意:部分非 RHEL 系系统也可能存在这个文件作为兼容链接,所以建议结合方法三使用。


方法二:通过包管理器反推(最可靠)

不同系的系统使用不同的软件包管理工具,这是区分两者的关键特征。

1. 检查是否有 apt 或 dpkg

which apt
# 或者
which dpkg
  • 如果命令存在且有输出路径(如 /usr/bin/apt),则是 Debian 系。
  • Debian 系系统默认使用 .deb 包格式。

2. 检查是否有 yum 或 dnf

which yum
# 或者
which dnf
  • 如果命令存在且有输出路径,则是 RHEL 系。
  • RHEL 系系统默认使用 .rpm 包格式。
  • 注意:CentOS 7 及更早版本主要用 yum;CentOS 8+、RHEL 8+ 主要用 dnf(yum 通常是 dnf 的软链接)。

综合判断逻辑:

  • 有 apt/dpkg + 无 yum/dnf → Debian 系
  • 有 yum/dnf + 无 apt/dpkg → RHEL 系
  • 两者都有?极少见,可能是自定义环境,需以 /etc/os-release 为准。

方法三:一键命令总结(适合快速操作)

如果你想在一条命令中快速获取清晰结果,可以使用以下脚本:

echo "=== OS Info ===" && 
grep -E "^ID=" /etc/os-release 2>/dev/null || echo "No os-release found" && 
echo "Package Manager:" && 
(which apt > /dev/null 2>&1 && echo "APT (Debian-based)") || 
(which yum > /dev/null 2>&1 && echo "YUM/DNF (RHEL-based)") || 
echo "Unknown package manager"

或者更简洁的版本:

if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "Distro: $NAME ($VERSION_ID)"
    echo "ID: $ID"
else
    cat /etc/redhat-release 2>/dev/null || echo "Unknown system"
fi

常见误区提醒

  1. 不要只看内核版本
    uname -r 显示的是 Linux 内核版本(如 5.4.0-xxx-generic),它不能告诉你用户空间的用户态程序属于哪个发行版。Debian 和 RHEL 都可以运行相同的内核版本。

  2. 阿里云/腾讯云等云厂商的特殊镜像
    国内主流云厂商提供的公共镜像通常基于官方上游版本进行优化。例如:

    • 阿里云的 Aliyun Linux 是基于 CentOS 定制的,属于 RHEL 系。
    • 腾讯云的 TencentOS 也是基于 CentOS/RHEL 体系。
    • 华为云的 openEuler 虽然源自社区,但其生态更接近 RPM 体系,包管理类似 RHEL 系。

    因此,即使名字不叫 CentOS 或 RHEL,只要包管理器是 dnf/yum,就应按 RHEL 系的操作习惯去维护(如使用 systemctl 管理服务,而非 service 或 init.d)。

  3. 容器环境(Docker/K8s)
    如果你在容器中执行这些命令,看到的是容器的文件系统信息,而不是宿主机的。此时应关注 Dockerfile 中的基础镜像标签(如 FROM debian:buster 或 FROM centos:7)。


总结

特征 Debian 系 (Ubuntu, Debian, Kali…) RHEL 系 (CentOS, RHEL, Alma, Rocky…)
包管理器 apt, dpkg yum, dnf
包格式 .deb .rpm
标识文件 /etc/os-release (ID=debian) /etc/os-release (ID=rhel) 或 /etc/redhat-release
服务管理 systemctl (主流) systemctl (主流)

最快判断方式:

cat /etc/os-release | grep ID

看到 debian 就是 Debian 系,看到 rhel、centos、almalinux 等就是 RHEL 系。