判断远程服务器是 CentOS 还是 Ubuntu,最稳妥的方式不是猜,而是通过 SSH 登录进去看系统版本信息。毕竟现在的云厂商(阿里云、腾讯云、华为云等)提供的镜像虽然底层内核可能相似,但包管理器和默认配置差异很大。
以下是几种从“暴力”到“优雅”的判断方法,按推荐程度排序:
1. 最标准做法:查看发布文件内容
这是最准确的方法,因为这两个发行版都在 /etc/ 目录下放了描述自身版本的专用文件。
在终端执行以下命令之一即可:
cat /etc/os-release
输出示例对比:
-
如果是 CentOS (7/8):
NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ...注意:CentOS 8 已经停止维护,现在主流是 CentOS Stream 或 Rocky/AlmaLinux,它们也会显示
ID="centos-stream"或ID="rocky"等,但名字里通常带 “CentOS” 或 “Rocky”。 -
如果是 Ubuntu:
NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)" ID=ubuntu ...
为什么推荐这个?
/etc/os-release是 freedesktop.org 的标准,几乎所有现代 Linux 发行版都支持,而且格式统一,解析起来最不容易出错。
2. 快速判断:使用 lsb_release 命令
如果你安装了 lsb-release 包(Ubuntu 默认安装,CentOS 可能需要手动装 redhat-lsb-core),可以用这个更简洁的命令:
lsb_release -a
-
Ubuntu 输出:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy -
CentOS 输出:
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.9.2009 (Core) Release: 7.9.2009 Codename: Core
注意: 有些精简版的云服务器镜像可能没预装
lsb_release,这时候会提示command not found。如果遇到这种情况,请回退到第 1 种方法。
3. 辅助判断:检查包管理器
CentOS 和 Ubuntu 的软件包管理系统完全不同,这是一个非常直观的区分点:
-
CentOS/RHEL 系: 使用
yum或dnfyum --version # 或者 dnf --version -
Ubuntu/Debian 系: 使用
apt或apt-getapt --version # 或者 apt-get --version
你可以直接尝试运行:
which apt yum
如果只有 apt 没有 yum,大概率是 Ubuntu;反之则是 CentOS 系。
4. 进阶技巧:通过内核模块和初始化系统判断(不依赖特定文件)
如果你连 /etc/os-release 都被删了(极端情况),可以看初始化系统和内核模块:
-
Systemd vs SysVinit:
现在两者基本都用 systemd,所以这招不太灵。但你可以看/sbin/init是否是 systemd。 -
观察默认编辑器或 shell:
- Ubuntu 默认编辑器通常是
nano或vim,且用户主目录结构较规范。 - CentOS 传统上更偏向
vi/vim,且历史包袱较重。
- Ubuntu 默认编辑器通常是
但这都不是可靠的判断依据,仅作为旁证。
⚠️ 重要提醒:警惕“伪 CentOS”
近年来,由于 CentOS 8 停更,很多用户转向 Rocky Linux、AlmaLinux 或 CentOS Stream。这些系统在很多方面与 CentOS 高度兼容,甚至命令行几乎一样。
- Rocky Linux / AlmaLinux:它们是 RHEL 的下游克隆版,行为像 CentOS,但名字不同。
- CentOS Stream:它是 RHEL 的上游滚动版本,名字叫 CentOS,但本质是开发分支。
所以,当你看到 Distributor ID: CentOS 时,最好再确认一下具体版本:
cat /etc/redhat-release
- CentOS 7:
CentOS Linux release 7.9.2009 (Core) - Rocky:
Rocky Linux release 8.5 (Green Obsidian) - Alma:
AlmaLinux release 8.5 (Sky Tiger)
✅ 最佳实践建议
在实际运维中,不要只靠“猜”,建议在自动化脚本中加入以下逻辑:
# 安全获取系统类型
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VERSION_ID=$VERSION_ID
elif [ -f /etc/redhat-release ]; then
OS="RedHat/CentOS"
else
OS="Unknown"
fi
echo "Detected OS: $OS, Version: $VERSION_ID"
这样既能处理 Ubuntu,也能正确处理各种 RHEL 衍生版(包括 CentOS、Rocky、Alma、Fedora 等)。
总结:首选 cat /etc/os-release,次选 lsb_release -a,辅以 which apt yum 快速验证。
云技术博客