在 Linux 查看操作系统信息

[复制链接]
发表于 2026-10-3 16:21:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、为什么需要查系统信息

拿到一台机器(物理机、虚拟机、云主机)先干的第一件事,往往是确认它到底是什么系统、什么版本——因为装什么包管理器、走 apt 还是 yum、驱动怎么装,全 depends on 这个判断。

在 Linux 里查看操作系统信息有好几种办法,下面按"最可靠 → 最直观"排一遍。

二、看 /etc/os-release(最推荐)

用 cat 查看 /etc/os-release 文件的内容,可以拿到当前系统的详细信息。这是现代 Linux 发行版的通用标准(由 systemd 等社区共同推行的 /etc/os-release 规范),Ubuntu、CentOS、Debian、openEuler、统信、麒麟基本都带。

cat /etc/os-release

Ubuntu 的输出可能类似于:

NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
VERSION_CODENAME=focal

CentOS 的输出可能类似于:

NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
PRETTY_NAME="CentOS Linux 8 (Core)"
VERSION_ID="8"

字段含义:

字段用途
NAME发行版名称
VERSION完整版本串,含代号
ID短标识,脚本里判断最常用(ubuntu / centos / debian)
ID_LIKE家族关系(如 debian 说明包管理器是 apt)
PRETTY_NAME给人看的一行版本描述
VERSION_CODENAME版本代号(Ubuntu 的 focal、jammy 等),配软件源时常用

脚本里做系统判别的正确写法是读 ID,别去匹配 NAME 里的字符串。ID 是稳定规范字段,NAME 是显示文本,格式随时可能变。

三、lsb_release -a

用 lsb_release -a 也能获取 Linux 系统的详细信息,这个命令会显示 Linux Standard Base(LSB)信息。

lsb_release -a

Ubuntu 上输出可能包含:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

注意:CentOS 默认没有 lsb_release 命令的实现(不是命令坏了,是包没装),某些版本可以通过安装 redhat-lsb-core 之类的包来补上。所以不能把这个命令当作跨发行版的通用手段——跨版本脚本里要先判断命令是否存在。

四、cat /etc/*release(通配兜底)

cat /etc/*release

这个命令会把 /etc 目录下所有以 release 结尾的文件内容一次性打印出来,对绝大多数 Linux 发行版都适用,包括 Ubuntu 和 CentOS。

优点是不依赖任何命令是否存在,纯 shell 通配;缺点是会把多个文件的内容连在一起输出,可读性差,适合临时快速看一下,不适合脚本解析。想精准一点可以用:

cat /etc/redhat-release    # RedHat 系(CentOS / Rocky / Alma)
cat /etc/debian_version    # Debian / Ubuntu

这两个文件是最老牌的"身份文件",至今仍广泛存在。

五、hostnamectl(顺带看主机信息)

hostnamectl 除了管主机名,也提供操作系统信息,包含发行版名称和版本。

hostnamectl

输出里你应该能看到包含操作系统相关信息的行,例如:

Operating System: CentOS Linux 8 (Core)
     Kernel: Linux 4.18.0

或者

Operating System: Ubuntu 20.04.1 LTS
     Kernel: Linux 5.4.0-80-generic

它属于 systemd 工具集,在装有 systemd 的现代发行版上都有。它最大的价值其实是顺带把内核版本也一起拿到了——很多排障(驱动、glibc、容器运行时)光看发行版不够,还得看内核。

六、看内核版本:uname

和发行版版本是两回事,要分开看:

uname -r      # 内核发行版(如 5.4.0-80-generic)
uname -a      # 完整信息
uname -m      # 机器硬件架构(x86_64 / aarch64)

架构这点在鲲鹏(aarch64)、德国(loongarch64)等国产平台上一眼就能确认,装软件前必须先看清是 x86_64 还是 aarch64,下错包就白折腾。

七、四种方法对比

方法通用性可读性建议
cat /etc/os-release最高(现代发行版)好首选,脚本里读 ID
lsb_release -a一般(CentOS 需装包)好Ubuntu/Debian 上可用
cat /etc/*release很高差(多文件拼接)临时快速查看
hostnamectl装 systemd 的都有好想连内核一起看

八、一条命令搞定常用信息

实际排障时通常要的信息不只是发行版:

cat /etc/os-release
uname -a
cat /proc/cpuinfo | grep "model name" | head -1      # CPU 型号
free -h                                              # 内存
df -h                                                # 磁盘
systemctl get-default                                # 启动目标(graphical / multi-user)

把这些命令当成一个"开局三板斧":发行版 → 内核 → 资源,基本能把机器摸清个八九成。

小结

想判断一台 Linux 是 Ubuntu 还是 CentOS:

  • 首选 cat /etc/os-release,现代发行版都支持,脚本里读 ID 字段做判断最稳;
  • Ubuntu/Debian 可以补一条 lsb_release -a,但 CentOS 默认没这个命令;
  • 掉命令依赖的兜底写法是 cat /etc/*release,兼容性最好、可读性最差;
  • hostnamectl 能连内核版本一起看,装 systemd 的系统都有。

再配 uname -a 看内核与架构(x86_64 还是 aarch64),一份完整的系统画像就有了。

(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于常见 Linux 发行版的Shell环境,适用于运维排障与软件选型场景。)

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表