一、系统信息

uname:查看内核与架构。

命令输出
uname -a全部信息(内核名、主机名、内核版本、架构等)
uname -r内核版本号
uname -m硬件架构(x86_64aarch64

发行版信息cat /etc/os-release(发行版名称、版本、ID,所有现代发行版均提供此文件)。

运行时间uptimecat /proc/uptime(后者为秒数,适合脚本)。

二、CPU 信息

lscpu/proc/cpuinfo 和 sysfs 读取:

字段含义
CPU(s)逻辑核心总数(含超线程)
Thread(s) per core每核线程数(>1 表示开启超线程)
Core(s) per socket每颗物理 CPU 的内核数
Socket(s)物理 CPU 数量
Model name型号与频率
Flags指令集支持(avxvmx(虚拟化)、rdrand 等)

原始数据:cat /proc/cpuinfo

三、内存状态

free -h 以人类可读格式输出。

字段含义
total总物理内存
used已使用(含被缓存占用的部分)
free完全未被使用的内存
available可供应用程序使用的内存(含可回收的 cache/buffer),这是应关注的唯一可用指标
Swap total/used/free交换分区统计

关键认知:Linux 会积极利用空闲内存做磁盘缓存(cache),所以 free 往往很小,但 available 才是真实可用量。free 小不代表内存不足——只有 available 趋近于 0 时,系统才真正面临内存压力。

原始数据:cat /proc/meminfo

四、磁盘与块设备

lsblk:树形展示所有块设备(磁盘、分区、LVM、光盘)的层级关系,比 fdisk -l 直观。

lsblk                     # 默认树形
lsblk -f                  # 带文件系统类型和 UUID

df:查看已挂载文件系统的容量使用情况。

df -h                     # 人类可读,查看所有挂载点
df -h /                   # 仅根分区
df -i                     # 查看 inode 使用率(文件数量是否耗尽)

du:查看目录/文件的累计占用空间。

du -sh *                  # 当前目录下每个子项的总大小
du -h --max-depth=1       # 仅一层子目录
du -sh /var/log           # 指定目录总大小

区别df 看分区整体容量(已挂载的块设备级别),du 看目录树的文件累计大小。若 du 统计的总和远小于 df 显示的已用空间,通常意味着有大文件已被删除但仍有进程持有其文件描述符(lsof | grep deleted 可查)。

五、内核运行时参数:sysctl

sysctl 用于在运行时查看和修改内核参数,对应 /proc/sys/ 目录下的文件。

sysctl -a                 # 查看所有可调参数
sysctl vm.swappiness      # 查看单一参数
sysctl -w vm.swappiness=10 # 修改参数(临时,重启失效)

常见参数

参数含义
vm.swappiness系统使用交换分区的倾向(0100,默认 60,服务器可调至 1020)
net.ipv4.ip_forwardIP 转发(作为路由器/NAT 网关时需设为 1)
kernel.pid_max系统最大 PID 数量
fs.file-max系统全局最大文件句柄数

持久化:写入 /etc/sysctl.conf/etc/sysctl.d/*.conf,重启或 sysctl -p 加载。

六、系统状态一览

vmstat:提供进程、内存、分页、阻塞 I/O、CPU 活动的快照。

vmstat 2                 # 每 2 秒刷新,适合快速定位瓶颈

关键列:si/so(Swap 换入/换出,非 0 表示内存紧张)、us/sy/id/wa(CPU 分布)。

iostat:查看磁盘 I/O 负载(需要 sysstat 包)。

iostat -x 1              # 每秒输出扩展统计,重点关注 %util(设备繁忙度)

笔记结语

系统状态查看的核心命令大多读取 /proc/sys 两个虚拟文件系统——它们是内核与用户空间的数据接口。记命令不如记路径: 需要什么信息,先去对应的 /proc/sys 文件里找,命令只是这些文件的格式化展示。