登上一台不熟悉的 Linux 服务器,第一件事通常是确认系统版本,因为装软件包、找文档都要对应版本。很多人一上来就 uname -a,看到内核版本就当成系统版本,结果装错了包。

看发行版版本

cat /etc/os-release

这是目前最通用、最推荐的方式,CentOS 7 之后、Ubuntu、Debian、Alpine 都有这个文件。输出里 NAME 是发行版名称,VERSION_ID 是版本号,PRETTY_NAME 是展示用的完整名称。

老系统可能没有这个文件,可以看这两个:

cat /etc/redhat-release   # CentOS / RHEL / Rocky
cat /etc/issue            # 几乎所有发行版

Ubuntu 和 Debian 还可以用 lsb_release -a,但需要装 lsb-release 包,精简镜像里往往没有。

看内核版本

uname -r
uname -a

uname -r 输出类似 3.10.0-1160.el7.x86_64,这是内核版本,不是发行版版本。el7 表示编译给 RHEL 7 系列用的。系统升级内核后这个数字会变,但发行版版本不变。

看 CPU 架构

uname -m
arch

x86_64 是 64 位 Intel 架构,aarch64 是 ARM 64 位,i686 是 32 位。下载软件包、拉取 Docker 镜像时必须对应,架构错了装不上。

常见混淆

  • 把内核版本当系统版本,比如把 3.10 内核的 CentOS 7 当成 CentOS 3;
  • CentOS Stream 和 CentOS 7 的命令一样,但软件源不同,看 VERSION_ID 才能区分;
  • 容器里看的 /etc/os-release 是镜像的基础系统,不是宿主机;
  • WSL 环境里看到的是发行版信息,内核版本带 microsoft 字样。

一条命令看全

hostnamectl

systemd 系统上直接输出主机名、操作系统、内核、架构,信息一次到位,是判断环境最快的办法。