Debian 服务器磁盘空间查看与清理
服务器最常见的“突然挂掉”原因之一就是磁盘占满,尤其是 /var、/ 或 /home。下面从查看 → 定位 → 清理一步步教你操作。
1. 快速查看整体磁盘使用情况(最常用 3 条命令)
| 命令 | 用途与输出特点 | 推荐使用场景 |
|---|---|---|
| df -h | 人类可读格式,显示每个挂载点使用量/剩余 | 第一眼看哪里快满了(首选) |
| df -hT | 多显示文件系统类型(ext4/xfs/tmpfs 等) | 排查 tmpfs 或特殊分区 |
| du -sh /* | 显示根目录下每个一级目录占用大小(排序后) | 快速定位哪个大目录吃空间 |
最常用组合(复制粘贴运行):
Bash
df -h
echo "-------------------"
sudo du -sh /* 2>/dev/null | sort -hr | head -n 15通常你会看到 /var、/home、/usr 排在前列。
2. 深入定位占用空间的大户(分层钻取)
第一层:找大目录
Bash
# 列出前 10 大目录(忽略错误)
sudo du -shx /* 2>/dev/null | sort -hr | head -n 10常见罪魁祸首:
- /var(日志、缓存、数据库)
- /home(用户文件、下载、虚拟机镜像)
- /usr(软件包、源码编译产物)
- /var/lib/docker(如果装了 Docker)
第二层:进入嫌疑目录继续钻
Bash
# 示例:/var 最大 → 看里面
sudo du -sh /var/* 2>/dev/null | sort -hr | head -n 10
# 再深入:/var/log 最大
sudo du -sh /var/log/* 2>/dev/null | sort -hr | head -n 10第三层:交互式神器 ncdu(强烈推荐安装)
Bash
sudo apt update
sudo apt install ncdu
# 扫描整个根目录(可随时 q 退出)
sudo ncdu /
# 只扫描 /var(更快)
sudo ncdu /varncdu 优点:用箭头/回车浏览,像文件管理器一样删除文件(按 d 删除,按 y 确认)。
3. Debian 服务器最常见的空间占用点 & 安全清理方法
| 目录/类型 | 常见占用原因 | 安全清理命令(推荐顺序) | 注意事项 |
|---|---|---|---|
| /var/cache/apt/archives/ | 已下载的 deb 包 | sudo apt clean 或 sudo apt autoclean | 完全安全,可随时清理 |
| /var/log/ | journald 日志、rsyslog 文本日志 | sudo journalctl --vacuum-time=2weeks sudo journalctl --vacuum-size=500M | 建议保留 1–4 周 |
| /var/log/journal/ | systemd journal 持久化日志 | 编辑 /etc/systemd/journald.conf → SystemMaxUse=300M → sudo systemctl restart systemd-journald | 持久化后必设上限 |
| /var/lib/docker/ | Docker 镜像、容器、volume | docker system prune -a --volumes(删未使用) docker image prune -a | 先确认无用镜像 |
| /tmp / /var/tmp | 临时文件 | sudo rm -rf /tmp/*(小心运行中程序) 或重启系统(/tmp 通常 tmpfs 或自动清) | 重启最安全 |
| /home/*/下载 / .cache | 用户下载、浏览器缓存 | du -sh ~/.cache/* → 手动删或 rm -rf ~/.cache/* | 用户目录可删缓存 |
| /var/lib/mysql / postgresql | 数据库膨胀、binlog、WAL | 优化数据库(VACUUM、清理旧备份) 或设置 binlog 过期 | 谨慎操作 |
| 旧内核 | /boot 里积累多个内核 | sudo apt autoremove(自动删旧内核) 或 sudo apt purge linux-image-旧版本 | 保留 1–2 个最新内核 |
4. 一键式常规清理脚本(可保存为 crontab 每周跑)
Bash
#!/bin/bash
# 文件名:/usr/local/bin/clean-disk.sh
# 权限:chmod +x /usr/local/bin/clean-disk.sh
echo "清理 apt 缓存..."
sudo apt clean
sudo apt autoclean
sudo apt autoremove -y
echo "清理 journal 日志(保留最近 4 周)..."
sudo journalctl --vacuum-time=4weeks
echo "清理临时目录..."
sudo find /tmp -type f -atime +10 -delete 2>/dev/null
sudo find /var/tmp -type f -atime +30 -delete 2>/dev/null
echo "完成。当前磁盘使用:"
df -h /加入 crontab(每周日凌晨 4 点):
Bash
sudo crontab -e
# 添加一行:
0 4 * * 0 /usr/local/bin/clean-disk.sh >> /var/log/clean-disk.log 2>&15. 快速排查“磁盘突然占满”的 checklist
- df -h → 看哪个分区 90%+
- sudo du -shx /* | sort -hr | head → 定位大目录
- 进入大目录 → sudo du -sh * | sort -hr | head
- 安装 ncdu → sudo ncdu / 或 sudo ncdu /var
- 检查 journal:sudo journalctl --disk-usage
- 检查 Docker(如果有):docker system df
- 清理后再次 df -h
记住:永远不要直接 rm -rf /var/log/ 或 /var/lib 整个目录,会毁系统。定位到具体子目录再删。
掌握以上方法,你就能在 5–10 分钟内找出并解决 95% 的 Debian 服务器磁盘空间问题。
版权声明:
作者:后浪云
链接:https://idc.net/help/442482/
文章版权归作者所有,未经允许请勿转载。
THE END
