确认当前系统是 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 --versionOpenEuler 兼容 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
常见误区提醒
- 不要只看
hostname或whoami:这些只是主机名和用户,毫无参考价值。 - 不要仅凭
uname -a中的内核版本号判断:不同厂商可能定制相同内核版本,必须结合发行版标识文件。 - OpenEuler 的兼容性:OpenEuler 在设计上高度兼容 CentOS/RHEL,所以它的包管理行为、服务启动方式(systemd)都和 RedHat 系很像。如果你是从 CentOS 迁移过来的,可能会觉得 OpenEuler 很熟悉;而从 Ubuntu 迁移过来,则会明显感受到包管理和目录结构的差异。
结论: 最直接、最准确的方式就是执行 cat /etc/os-release,看 NAME 或 ID 字段。这是行业标准做法,适用于所有主流 Linux 发行版。
云技术博客