🐧 第01章 · 系统信息与硬件
uname lsblk lscpu free uptime /proc
系统信息与硬件¶
运维的起点是"先搞清楚自己在哪台机器上、跑着什么东西"。这一章教你用最常用的命令读出这台服务器的内核、发行版、CPU、内存、磁盘、架构与网络信息——所有后续章节的排查,都从这几条命令开始。
内核、发行版与架构¶
"Linux" 其实指内核;用户真正接触的是发行版(Distribution)。两者都要能一眼看清:
| 命令 | 作用 | 示例(本机实际输出) |
|---|---|---|
uname -r |
内核版本 | 6.8.0-139-generic |
uname -m |
CPU 架构 | x86_64 |
uname -a |
内核+主机名+架构成一键汇总 | Linux srv1952823 6.8.0-139-generic x86_64 GNU/Linux |
lsb_release -a |
发行版信息 | Ubuntu 24.04.5 LTS |
uname -r # 只输出内核版本号
uname -m # 架构:x86_64 是 64 位,x86 是 32 位,arm64 是 ARM 服务器
uname -a # 一条命令看全:主机名、内核、架构
cat /etc/os-release # 发行版的权威来源,比 lsb_release 更完整(含 VERSION_ID)
/etc/os-release 是 systemd 时代发行版的标准标识文件,写脚本时判断系统版本就用它:
# 判断是否为 Debian/Ubuntu 系
grep -qi "ubuntu\|debian" /etc/os-release && echo "Debian 系"
易错
uname默认只输出内核名Linux,必须带-r或-a才有内核版本号。uname -m输出x86_64≠ 32 位,别被"64"吓到——那是 AMD64 的规范写法,就是常见的 64 位 x86。
主机名与网络标识¶
主机名用来在集群里区分机器,也常出现在提示符和日志里。本机是 srv1952823。
hostname # 当前主机名
hostname -I # 本机 IP 地址列表(-I 大写,只显示地址不带接口名)
hostnamectl # systemd 主机名信息,含机器 ID、启动说明等
hostnamectl 还顺带给出了这台机器的重要身份信息。
CPU 信息¶
CPU 是性能的第一源头。lscpu 给出结构化的 CPU 信息,nproc 给出可用核心数,lscpu 的 -e 参数可同时看到多核细节。
nproc # 可用核心数(本机 4)
lscpu # CPU 架构、型号、核心数、线程数、缓存
lscpu | grep -E "Model name|^CPU\(s\)|Thread|Core|Socket" # 只看关键行
lscpu 里几个要到看的字段:
Model name—— CPU 型号;CPU(s)—— 总逻辑线程数;Thread(s) per core / Core(s) per socket / Socket(s)—— 超线程与物理核心数,三者相乘等于总线程数;Virtualization—— 是否支持硬件虚拟化(虚拟机、Xray 等常见用例)。
提示 云服务器上看到的物理核心往往被宿主机分配(本机 4 核是虚机配额),
lscpu显示的是"我能用到的"核心数,不一定等于宿主机物理核。判断是否虚机可用systemd-detect-virt。
systemd-detect-virt # 输出 qemu/kvm/… 表示是虚拟机;无输出表示物理机
内存与负载概览¶
这章先给一条命令感受系统"忙不忙",细节留到第 3、7 章:
free -h # -h 人类可读,查看内存总量与使用(本机 15Gi 总量)
uptime # 开机时长 + 1/5/15 分钟平均负载
平均负载(load average)三个数字分别代表过去 1/5/15 分钟的"排队等待 CPU 的任务数"。判断准则:平均负载 / 核心数 超过 1 就说明 CPU 开始饱和。
# 本机 4 核,负载 4 以内算正常,超过 4 就需要关注
uptime
# 约输出: up 2 days, load average: 0.20, 0.18, 0.15 → 4 核下负载 0.2 很轻松
磁盘与块设备¶
磁盘由块设备管理工具 lsblk 一次性看清层次关系(挂载点、容量、文件系统):
lsblk # 树状显示磁盘与分区
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT # 指定输出列,信息更清晰
lsblk -f # 一并显示文件系统类型与 UUID
本机的磁盘结构(运行 lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT 所得):
NAME SIZE TYPE FSTYPE MOUNTPOINT
sda 200G disk
├─sda1 199G part ext4 /
├─sda14 4M part
├─sda15 106M part vfat /boot/efi
├─sda16 913M part ext4 /boot
易错
df看到的是"挂载好的文件系统",lsblk看到的是"物理磁盘与分区"。一块 200G 磁盘分区后,每个分区单独挂载,容量加起来才是总容量。sda14(4M)没有挂载点,那是 Windows/UEFI 或 OEM 保留分区,正常现象。
/proc:内核的虚拟文件系统¶
/proc 是内核暴露给用户态的"只读数据库",每一文件对应一条内核信息,读它不需要额外工具:
cat /proc/meminfo # 内存详情,free 命令的数据来源
cat /proc/cpuinfo # CPU 详情,含每核细致参数(lscpu 的数据来源)
cat /proc/loadavg # 平均负载(等价 uptime)
cat /proc/uptime # 开机秒数
cat /proc/version # 内核编译版本(uname -a 的来源)
/proc/sys 是其中的"可写区",用来调内核运行参数(第 8 章会用到):
sysctl net.ipv4.ip_forward # 查看是否开启 IP 转发
sysctl -a | grep vm.swappiness # 查看 swap 倾向配置(第 3 章细讲)
提示
/proc里的内容不占磁盘空间,是内存里的"假文件"。判断一个文件是否属于/proc的诀窍:ls -l看到大小为0,但cat能读出内容——那就是内核动态生成的。
硬件型号细节¶
想看物理硬件厂商、型号、序列号,用 DMI 工具(需要 root):
dmidecode -t system # 主板/机器制造商、序列号
dmidecode -t memory # 内存条型号与容量
dmidecode -t processor # 处理器厂商与型号
# 只看机器型号,避免一屏刷屏
dmidecode -t system | grep -E "Manufacturer|Product Name"
易错
dmidecode必须 root 权限;在虚机里它读的是宿主机虚拟出的 DMI 数据,生产环境多为"QEMU"/"KVM",型号可能不是真实厂商名。
uptime 与负载的延伸¶
uptime 其实是 top 的第一行信息,用 top -bn1 | head -5 也能拿到同样的负载数据。负载升高不代表一定是 CPU 问题——也可能是磁盘 I/O 排队(第 7 章 iostat 或 vmstat 区分)。
易错点¶
uname不带参数:只输出Linux,以为系统有问题,其实要加-r。- 把
lscpu的CPU(s)当物理核:那是含超线程的逻辑线程数,物理核还要看 Socket×Core。 lsblk里没挂载点的分区:不一定是故障,保留分区/EFI 分区本就常见。dmidecode读不到序列号:虚机常见,别据此怀疑硬件损坏。
相关命令¶
hostnamectl、lscpu、free、uptime、lsblk、df、dmidecode、sysctl、systemd-detect-virt。