Linux 磁盘空间不足?这几招直接搞定
遇到磁盘空间报警,别慌。先看根因,再动手清。下面是实战步骤,按顺序来。

1. 快速定位大文件/大目录
# 查看磁盘整体使用情况
df -h
# 看哪个目录占得最多(从根开始)
du -sh /* 2>/dev/null | sort -rh | head -10
# 继续深入可疑目录,比如 /var
du -sh /var/* 2>/dev/null | sort -rh | head -10
注意:du 跑大目录可能慢,先瞄一眼 /var/log、/tmp、/home,这些是重灾区。
2. 清理日志文件(最常见)
# 查看哪些日志文件最大
find /var/log -type f -size +100M -exec ls -lh {} \;
# 直接清空(不删除文件,释放空间)
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/messages
# 或者用 journalctl 清理 systemd 日志
journalctl --vacuum-size=200M # 保留200M
journalctl --vacuum-time=7d # 保留7天
关键:不要 rm 日志文件,除非你确定进程不会继续写。truncate 更安全。
3. 查找并删除大文件
# 找 >500M 的文件
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null
# 找 >1G 的(更狠)
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
# 确认后删除
rm -f /path/to/bigfile
注意:检查 /var/log、/tmp、/var/cache、/var/lib/docker(如果跑容器)。
4. 处理被删除但未释放空间的文件
有时候 rm 了文件,但进程还在写,空间没释放。
# 看哪些已删除文件被进程占用
lsof | grep '(deleted)'
# 找到对应PID,重启进程或 kill -HUP
kill -HUP <PID>
实战:常见于日志文件被删但 syslog/rsyslog 没重启。
5. 清理包管理器缓存
# apt (Debian/Ubuntu)
apt clean
apt autoclean
apt autoremove
# yum/dnf (CentOS/RHEL)
yum clean all
dnf clean all
6. 查找重复或临时文件
# 找 /tmp 下大文件
du -sh /tmp/* | sort -rh | head -5
# 找 core dump
find / -name "core.*" -type f -size +10M 2>/dev/null
7. 终极必杀:看 inode 是否满
# 检查 inode 使用率
df -i
# 如果 inode 满了,找小文件多的目录
find / -xdev -type f | cut -d '/' -f 2 | sort | uniq -c | sort -rn | head -10
常见场景:邮件队列、缓存目录产生大量小文件。
一句话总结
先 df -h 看挂载点,再 du 找大目录,find 抓大文件,lsof 查未释放,最后清理日志和缓存。
别瞎删系统文件,先确认再动手。
💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者
