du 命令详解
du 是 Disk Usage 的缩写,是 Linux 中最常用的检查文件和目录占用空间的命令。
针对你之前磁盘空间不足的情况,熟练使用 du 能帮你迅速定位到底是谁在吃掉你的硬盘。
1. 最常用的基础组合
这是你最需要记住的三个参数组合:
-
du -sh *:最实用的快速检查。-
-s(summary):只显示总计。 -
-h(human-readable):以 KB, MB, GB 显示(而不是一串长数字)。 -
*:查看当前线下所有文件和文件夹的大小。
-
-
du -ah:显示当前目录下所有文件(包括隐藏文件)的大小,而不仅仅是文件夹。
2. 深度控制:定位大文件夹
如果你想知道某个大文件夹(比如 /var)里到底是哪个子目录占空间,但不想看太深的内容:
-
du -h --max-depth=1 /var:只显示/var下第一层目录的大小。 -
du -h --max-depth=2 /root:显示到第二层,适合深入挖掘。
3. 排序与查找(配合管道符)
这是找出“磁盘流氓”的最快办法:
-
找出当前目录下最大的 10 个东西:
Bash
du -ah | sort -rh | head -n 10-
sort -r:逆序排列。 -
sort -h:按照人类可读的大小(G > M > K)智能排序。
-
4. 统计特定时间的文件
如果你怀疑是最近生成的日志文件导致磁盘爆满:
du -h --time /var/log:不仅显示大小,还会显示该目录或文件最后修改的时间。
5. 排除特定目录或文件
有时候你挂载了外部硬盘或不想看某个巨大的缓存文件夹(比如 .git):
-
du -h --exclude="*.log" .:统计当前目录大小,但排除掉所有.log文件。 -
du -h --exclude="./go":排除掉你的 Go 依赖包目录进行统计。
6. 实战总结表
| 命令示例 | 使用场景 |
|---|---|
du -sh |
快速查看当前文件夹总共多大 |
du -sh * |
看看当前目录下哪个子目录或文件最大 |
du -ch |
在列表最后增加一行 total 总计 |
du -sh / --exclude=/proc |
统计整个根目录(排除虚拟文件系统) |
💡 给你的特别建议
既然你正在开发 Go 程序并涉及 SQLite:
-
定期检查数据库文件:
du -h your_database.db。如果它增长过快,可能需要执行VACUUM命令。 -
清理编译缓存:如果你发现
/root/.cache/go-build很大,用du -sh ~/.cache/go-build确认后,可以用go clean -cache清理。
下一步你是否需要我写一个简单的 Shell 脚本,放入 crontab 中,实现“当磁盘剩余空间低于 10% 时,自动删除旧日志”的功能?