Linux 怎么找到占用空间最大的文件?
磁盘快满了,想找出哪些文件/目录占用了最多空间
解决方案
逐层排查大目录 推荐
# 第一步:看哪个分区满了 df -h # 第二步:找根目录下最大的目录 du -sh /* 2>/dev/null | sort -rh | head -10 # 第三步:进入大目录继续排查 du -sh /var/* 2>/dev/null | sort -rh | head-10
从根目录开始,逐层深入找到占用空间最大的目录。sort -rh 按大小倒序排列。
适用场景:不确定哪里占用了空间,需要逐步排查
直接找大文件 推荐
# 找大于 100MB 的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh
# 更简洁的方式
find / -type f -size +100M -printf '%s %p\n' 2>/dev/null | sort -rn | head -20find -size +100M 找大于 100MB 的文件。2>/dev/null 隐藏权限错误。
适用场景:想直接定位大文件
用 ncdu 交互式查看(推荐安装)
# 安装 sudo apt install ncdu # Debian/Ubuntu sudo yum install ncdu # CentOS/RHEL # 使用 ncdu /
ncdu 是交互式的磁盘分析工具,可以上下浏览目录,按大小排序,非常直观。
适用场景:经常需要分析磁盘空间
清理常见大文件
# 清理日志 sudo journalctl --vacuum-size=500M # 清理 apt 缓存 sudo apt clean # 清理 Docker docker system prune -a # 查找旧的大日志 find /var/log -name "*.gz" -delete
常见的空间占用来源:系统日志、包管理缓存、Docker 镜像、旧内核。
适用场景:快速释放空间
注意事项
不要随意删除 /var/log 下的活跃日志文件
删除前确认文件不是系统关键文件
Docker 的 /var/lib/docker 可能占用大量空间