区分一台服务器是运行 Debian 还是 Red Hat 系(如 RHEL、CentOS、Rocky Linux、Fedora 等)操作系统,可以通过检查系统文件、包管理工具或发行版标识文件来实现。以下是几种常用且可靠的方法:
✅ 方法一:查看 /etc/os-release 文件(推荐)
这是现代 Linux 发行版统一使用的标准文件,包含详细的版本信息。
cat /etc/os-release
典型输出示例:
-
Debian:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" ID=debian VERSION_ID="12" -
RHEL/CentOS/Rocky/Fedora:
PRETTY_NAME="Red Hat Enterprise Linux Server 9.4" NAME="Red Hat Enterprise Linux Server" ID="rhel" VERSION_ID="9.4" # 或 CentOS: # ID="centos" # 或 Fedora: # ID=fedora
👉 通过 ID= 字段即可快速判断:
ID=debian→ Debian 系ID=rhel/ID=centos/ID=fedora/ID=rocky/ID=almalinux→ Red Hat 系
💡 注意:Ubuntu 也是 Debian 系,但
ID=ubuntu;若需进一步细分 Debian/Ubuntu,可结合PRETTY_NAME或VERSION_CODENAME。
✅ 方法二:检查包管理器命令是否存在
| 操作 | Debian/Ubuntu 系 | Red Hat 系 |
|---|---|---|
| 安装软件 | apt install <pkg>dpkg -l |
dnf install <pkg>yum install <pkg>rpm -qa |
| 查询已安装包 | dpkg -l | grep <name> |
rpm -qa | grep <name> |
✅ 执行以下任一命令即可判断:
which apt || which dnf || which yum
- 若
apt存在 → Debian/Ubuntu - 若
dnf或yum存在 → Red Hat 系
(注:CentOS 8+ 默认用dnf,旧版用yum;RHEL 7 及以前主要用yum)
✅ 方法三:查看特定发行版标识文件
Debian 系特有:
cat /etc/debian_version # 显示 Debian 版本号(如 "12.0")
ls /etc/apt/sources.list* # APT 源配置文件
Red Hat 系特有:
cat /etc/redhat-release # 显示完整发行版名称(如 "Red Hat Enterprise Linux Server release 9.4 (Ootpa)")
# 或(新版 RHEL 9+ 可能无此文件,但仍有 /etc/system-release)
cat /etc/system-release
⚠️ 注意:某些最小化安装的容器镜像可能缺少这些文件,此时优先使用
/etc/os-release。
✅ 方法四:综合脚本判断(自动化场景)
if [ -f /etc/os-release ]; then
. /etc/os-release
case "$ID" in
debian) echo "Debian family";;
rhel|centos|fedora|rocky|almalinux) echo "Red Hat family";;
ubuntu) echo "Ubuntu (Debian-based)";;
*) echo "Unknown: $NAME ($ID)";;
esac
else
echo "Cannot determine OS."
fi
🔍 补充说明
- SUSE/openSUSE 属于另一大家族,其
ID=suse,与上述两者均不同。 - 在云环境或容器中,有时需结合
hostnamectl或uname -a辅助判断,但不如上述方法可靠。
需要我帮你写一个一键检测脚本,或解释某条命令的具体输出含义吗?
PHPWP博客