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