通过命令行怎样区分CentOS、Rocky Linux和Ubuntu系统?

可以通过查看系统标识文件、发行版信息工具或包管理器来区分这些 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 字段会不同(如 rockycentos

⚠️ 注意:部分最小化安装的 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,它跨发行版兼容性好、信息准确,是官方推荐的识别方式。其他方法可作为补充验证。

云服务器