马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、为什么需要查系统信息
拿到一台机器(物理机、虚拟机、云主机)先干的第一件事,往往是确认它到底是什么系统、什么版本——因为装什么包管理器、走 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环境,适用于运维排障与软件选型场景。) |