Day 3:系统资源监控
今日目标:会看磁盘空间、目录大小、内存使用、系统负载、内核版本——机器状态一目了然 🎯
命令速览
| 命令 |
用途 |
核心参数 |
df |
查看磁盘分区可用空间 |
-h (人类可读) |
du |
查看文件/目录占用空间 |
-sh (汇总) / -sk (KB) |
free |
查看内存使用情况 |
-h (人类可读) |
uptime |
查看系统运行时间与负载 |
(无参数) |
uname |
查看内核版本与系统架构 |
-a (全部信息) |
who |
查看当前登录用户 |
(无参数) |
逐个击破
① df — 磁盘空间
- 语法:
df -h
- 上手练 🖥️:
df -h——查看所有挂载分区的使用情况
df -h /——只看根分区
df -h /tmp——如果 /tmp 是独立分区会单独显示
df -ih——查看 inode 使用情况(小文件过多 inode 也会耗尽)
- ⚠️ 常见坑:
df 显示磁盘满了但 du 显示还有空间——可能是已删除但进程还在写的文件占用了空间(lsof | grep deleted)
② du — 目录占用空间
- 语法:
du -sh <DIR> / du -sh * / du -sk * | sort -n
- 上手练 🖥️:
du -sh /var/log——查看日志目录占用总空间
du -sh /var/log/*——查看每个子项的大小
du -sk /var/log/* | sort -rn | head -10——找到最大的 10 个日志文件(KB 为单位)
du -sh --max-depth=1 ~/——只看 home 目录下一层的占用
du -sh * .[^.]*——包含隐藏文件(.bashrc 等)
- ⚠️ 常见坑:
du 统计的是实际占用的磁盘块(block),与 ls -l 看到的文件大小可能不同(稀疏文件)
③ free — 内存使用
- 语法:
free -h
- 上手练 🖥️:
free -h——查看总内存、已用、空闲、缓存
free -h -s 2——每 2 秒刷新一次(Ctrl+C 退出)
- 理解输出:
available 才是真正可用的(含可释放的缓存),不要只看 free
- ⚠️ 常见坑:Linux 会利用空闲内存做磁盘缓存(buff/cache),看到
free 很小别慌——看 available 列才是真实可用内存
④ uptime — 系统负载
- 语法:
uptime
- 上手练 🖥️:
uptime——查看运行时间、用户数、负载
- 理解负载:三个数字分别是 1 分钟 / 5 分钟 / 15 分钟的平均负载
- 负载 ≈ CPU 核心数时系统满负荷,超过核心数则排队等待
- 查看 CPU 核心数:
nproc 或 cat /proc/cpuinfo | grep processor | wc -l
- ⚠️ 常见坑:负载高不代表 CPU 忙——等待 I/O(磁盘读写)的进程也会计入负载
⑤ uname — 系统信息
- 语法:
uname -a
- 上手练 🖥️:
uname——只显示内核名称
uname -r——内核版本号
uname -a——全部信息(内核名、主机名、版本、架构等)
uname -m——硬件架构(x86_64 表示 64 位)
- ⚠️ 常见坑:
uname -r 显示的内核版本和发行版版本(lsb_release -a)是两回事
⑥ who — 当前登录用户
- 语法:
who
- 上手练 🖥️:
who——查看哪些用户登录了
who -b——查看系统最后启动时间
w——比 who 更详细,还显示每个用户在运行什么命令
last——查看历史登录记录
- ⚠️ 常见坑:
who 只显示通过终端的登录,不显示通过 Web 或 API 访问的用户
今日必刷(全部终端实操)💪
- 用
df -h 查看你机器上还有多少磁盘空间,找出占用最高的分区
- 用
du -sh ~/ 查看你的 home 目录总大小
- 找出你 home 目录下最大的 5 个文件或目录(提示:
du -sk ~/* | sort -rn | head -5)
- 查看系统内存和负载(
free -h + uptime),对比负载和 CPU 核心数
- 排错题:
df -h 显示 / 分区使用了 95%,但你 rm -rf 删了一个 2G 的日志文件后,df 显示仍然是 95%——为什么?怎么释放空间?(提示:lsof)
- 排错题:
free -h 显示 available 只有 200M,你认为内存不够了,但同事说”Linux 内存管理就这样,可用的在 cache 里”——你怎么验证同事说的是对是错?
📚 命令详解