可以通过查看系统标识文件、发行版信息工具或包管理器来区分这些 Linux 发行版。以下是几种常用且可靠的方法:
1. 查看 /etc/os-release 文件(推荐,最通用)
这是现代 Linux 发行版的标准文件,包含详细的版本信息。
cat /etc/os-release
输出特征:
- CentOS (尤其是 CentOS 7/8):
NAME="CentOS Linux"或NAME="CentOS Stream" - Rocky Linux:
NAME="Rocky Linux" - Ubuntu:
NAME="Ubuntu"
示例对比:
# Rocky Linux
NAME="Rocky Linux"
VERSION_ID="9.2"
PRETTY_NAME="Rocky Linux 9.2 (Blue Onyx)"
# Ubuntu
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
# CentOS 7
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
💡 提示:如果只想看关键行,可运行
grep -E "^(NAME|VERSION|ID)=" /etc/os-release
2. 使用 lsb_release 命令(需安装 lsb-release 包)
lsb_release -a
- Ubuntu:通常显示
Distributor ID: Ubuntu,Description: Ubuntu 22.04.3 LTS - Rocky/CentOS:可能不显示完整描述(除非安装了
redhat-lsb-core),但ID字段会不同(如rocky或centos)
⚠️ 注意:部分最小化安装的 CentOS/Rocky 可能未预装此工具。
3. 检查包管理器类型
不同发行版使用不同的包管理工具:
| 发行版 | 包管理器 | 测试命令 |
|---|---|---|
| Ubuntu | APT | dpkg --version |
| CentOS/Rocky | DNF/YUM | rpm --version |
结合判断:
if command -v apt &> /dev/null; then echo "Ubuntu or Debian-based"; fi
if command -v dnf &> /dev/null; then echo "Rocky Linux or CentOS Stream"; fi
if command -v yum &> /dev/null; then echo "Legacy CentOS or Rocky"; fi
进一步用 rpm -qf /etc/os-release 或检查 /etc/redhat-release(仅 RHEL 系存在)辅助确认。
4. 快速一语句判断脚本
case "$(grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"')" in
ubuntu) echo "Ubuntu";;
rocky) echo "Rocky Linux";;
centos) echo "CentOS";;
*) echo "Unknown or other distro";;
esac
✅ 总结建议:
优先使用 cat /etc/os-release,它跨发行版兼容性好、信息准确,是官方推荐的识别方式。其他方法可作为补充验证。
CLOUD技术笔记