努力
加油

如何确认当前运行的是Ubuntu还是OpenEuler操作系统?

确认当前系统是 Ubuntu 还是 OpenEuler(欧拉),其实非常简单。这两个系统虽然底层都基于 Linux,但在发行版标识、包管理器和默认配置上有着本质的区别。

作为经常混迹在云原生和服务器运维领域的人,我通常不会只依赖单一命令,而是通过“组合拳”来快速定位。以下是几种最直观、最可靠的方法,按推荐程度排序:

1. 查看 /etc/os-release 文件(最标准、最推荐)

这是现代 Linux 发行版遵循 freedesktop.org 标准的统一方式,信息最全且格式规范。直接执行:

cat /etc/os-release

如何判断:

  • 如果是 Ubuntu:
    你会看到类似这样的输出:

    PRETTY_NAME="Ubuntu 22.04.3 LTS"
    NAME="Ubuntu"
    VERSION_ID="22.04"
    VERSION="22.04.3 LTS (Jammy Jellyfish)"
    ID=ubuntu
    ...

    关键看 NAME 或 PRETTY_NAME 字段是否包含 “Ubuntu”。

  • 如果是 OpenEuler:
    输出会显示:

    PRETTY_NAME="openEuler 22.03 LTS SP3"
    NAME="openEuler"
    VERSION_ID="22.03"
    VERSION="22.03 LTS SP3"
    ID=openeuler
    ...

    关键看 ID 为 openeuler,或者 NAME 包含 “openEuler”。

为什么推荐这个? 因为它是标准化的,无论你在 AWS、阿里云、华为云还是本地虚拟机里,只要是个正经的现代 Linux 发行版,这个文件都存在且格式一致。


2. 使用 lsb_release -a 命令(传统但有效)

如果你习惯用更传统的命令,可以用这个:

lsb_release -a
  • Ubuntu 会输出:

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 22.04.3 LTS
    Release:        22.04
    Codename:       jammy
  • OpenEuler 可能会输出:

    Distributor ID: openEuler
    Description:    openEuler release 22.03 (LTS-SP3)
    Release:        22.03
    Codename:       n/a

注意: 有些精简版的容器镜像或最小化安装的系统中,lsb-release 工具可能未安装,导致报错。这时候请回退到方法 1。


3. 检查内核版本与发行版标识(辅助验证)

有时候你连 /etc/os-release 都被删了(极端情况),可以看内核信息:

uname -r

但这只能告诉你内核版本(比如 5.15.0-xx-generic 或 5.10.0-xx-openeuler)。

  • Ubuntu 的内核模块通常带有 generic 或 lowlatency 后缀。
  • OpenEuler 的内核模块通常会明确标注 openeuler,例如:
    5.10.0-196.11.0.oe2203.x86_64

    看到 .oe 或 openeuler 字样,基本可以锁定是欧拉系统。


4. 观察包管理器(实操中最快的方式)

如果你已经登录系统并准备操作,看一眼你用的包管理器就能猜出七八分:

  • Ubuntu/Debian 系:

    dpkg --version
    # 或者
    apt --version

    如果你能顺畅运行 apt install xxx,那大概率是 Ubuntu。

  • OpenEuler/RHEL/CentOS 系:

    rpm -q --whatprovides redhat-release
    # 或者
    dnf --version

    OpenEuler 兼容 RHEL 生态,主要使用 dnf 或 yum 进行软件安装。如果你发现 apt 命令不存在,而 dnf 存在,那它很可能是 OpenEuler(也可能是 CentOS/Rocky/AlmaLinux,需结合其他命令确认)。


总结:一键判断脚本

如果你想写个脚本自动判断,可以用下面这段简洁的逻辑:

if grep -q "Ubuntu" /etc/os-release; then
    echo "This is Ubuntu"
elif grep -q "openEuler" /etc/os-release; then
    echo "This is OpenEuler"
else
    cat /etc/os-release | head -n 5
fi

常见误区提醒

  1. 不要只看 hostname 或 whoami:这些只是主机名和用户,毫无参考价值。
  2. 不要仅凭 uname -a 中的内核版本号判断:不同厂商可能定制相同内核版本,必须结合发行版标识文件。
  3. OpenEuler 的兼容性:OpenEuler 在设计上高度兼容 CentOS/RHEL,所以它的包管理行为、服务启动方式(systemd)都和 RedHat 系很像。如果你是从 CentOS 迁移过来的,可能会觉得 OpenEuler 很熟悉;而从 Ubuntu 迁移过来,则会明显感受到包管理和目录结构的差异。

结论: 最直接、最准确的方式就是执行 cat /etc/os-release,看 NAME 或 ID 字段。这是行业标准做法,适用于所有主流 Linux 发行版。