登上一台不熟悉的 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 -auname -r 输出类似 3.10.0-1160.el7.x86_64,这是内核版本,不是发行版版本。el7 表示编译给 RHEL 7 系列用的。系统升级内核后这个数字会变,但发行版版本不变。
看 CPU 架构
uname -m
archx86_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 字样。
一条命令看全
hostnamectlsystemd 系统上直接输出主机名、操作系统、内核、架构,信息一次到位,是判断环境最快的办法。