1.8.5 系统与硬件信息查询(uname、df、du、free、top、ps)

本节介绍常用的系统与硬件信息查询命令,帮助快速了解内核、磁盘、内存、进程与整体负载,为容量评估与故障排查提供依据。除命令说明外,提供可执行示例、排错思路与练习。

原理草图:系统信息采集路径

文章图片

uname:内核与系统标识
命令解释uname 读取内核提供的系统标识信息。
常用参数
- -a 全部信息
- -r 内核版本
- -m 架构
- -n 主机名

示例:核对内核版本与架构

uname -a
uname -r
uname -m

预期效果:返回类似 Linux host 5.15.0-84-generic x86_64

排错场景
- 驱动或内核模块加载失败时,先确认 uname -r 与驱动版本匹配。
- 发行版升级后服务异常,确认是否切换到新内核。


df:文件系统与挂载点空间
命令解释df 读取挂载点的块设备统计信息。
常用参数
- -h 人类可读
- -i inode 使用情况

示例:查看磁盘与 inode

df -h
df -i

预期效果:显示 Use%Mounted on
排错场景
- 磁盘报警但 df -h 不满,可能是 inode 耗尽:df -i 查看。
- 挂载点异常:df -h 中挂载目录不在预期设备上。


du:目录与文件占用
命令解释du 统计目录树实际占用大小(以块为单位)。
常用参数
- -s 汇总
- -h 人类可读
- --max-depth=1 限制层级

示例:定位磁盘占用热点

# 找出 /var 下最大目录
du -h --max-depth=1 /var | sort -hr | head -n 5

排错场景
- df 显示空间不足,用 du 找到大目录并清理日志或缓存。
- 与 df 数值差异大时,可能是删除后仍被进程占用的文件。


free:内存与交换空间
命令解释free/proc/meminfo 读取内存统计。
常用参数
- -h 人类可读
- -m 以 MB 显示

示例:快速判断内存压力

free -h

关键字段解释
- available 可用内存
- buff/cache 可回收缓存
- swap 交换分区使用量

排错场景
- available 很小且 swap 高,说明内存压力大。
- OOM 前兆:持续 swap 增长且 top 出现高 kswapd


top:实时负载与进程视图
命令解释top 实时显示 CPU、内存、进程资源使用。
常用交互
- P 按 CPU 排序
- M 按内存排序
- 1 展示各 CPU 核

示例:捕获高负载进程

# 进入 top 后按 P 排序查看 CPU 占用
top

关键指标解释
- load average 负载
- %us 用户态
- %sy 内核态
- %wa I/O 等待

排错场景
- load average 高且 %wa 高:可能磁盘 I/O 瓶颈。
- load average 高且 %us 高:可能某进程 CPU 过高。


ps:进程快照与筛选
命令解释ps 读取进程表并输出快照。
常用参数
- -ef 标准格式
- aux BSD 风格
- -o 自定义字段

示例:查找服务并查看参数

ps -ef | grep nginx
ps -o pid,ppid,cmd,%mem,%cpu -p 1234

排错场景
- 服务异常退出:ps -ef 确认是否存在进程。
- 进程启动参数异常:用 ps -o cmd 核对启动命令。


组合排错流程示例:磁盘告警与负载升高

# 1) 确认空间与 inode
df -h
df -i

# 2) 定位大目录
du -h --max-depth=1 /var | sort -hr | head -n 10

# 3) 观察是否有异常进程占用资源
top
ps -ef | grep suspicious_process

预期效果:找到占用大目录或异常进程,为清理或重启提供依据。


练习
1. 使用 uname -runame -m 输出系统信息,并解释各字段含义。
2. 在 /var 目录下用 du 找出最大 3 个子目录。
3. 通过 df -i 判断是否存在 inode 告警。
4. 用 ps -o 输出当前 shell 进程的 PID、PPID、命令与 CPU 占用。
5. 使用 top 观察 1 分钟内负载变化并记录最高 CPU 进程。