find命令配合-size可精准定位并清理1GB以上大文件:先用find / -type f -size +1G 2>/dev/null查找,再结合du -h与sort -hr排序筛选前10大文件,最后按需rm、truncate或清空,并检查logrotate配置防复发。

直接用 find 配合 -size 找出并清理 1GB 以上的大文件,是运维中最常用也最有效的空间释放手段。关键在于:先精准定位、再安全清理,避免误删或删后不释放。
快速查找大于1GB的文件
执行以下命令,从根目录开始扫描(建议加 2>/dev/null 屏蔽权限错误):
find / -type f -size +1G 2>/dev/null
说明:-type f 确保只查普通文件;+1G 表示“严格大于1GB”;2>/dev/null 抑制“Permission denied”类报错,让结果更干净。如只想查特定路径(比如 /var/log),把 / 换成对应路径即可。
按大小排序,优先处理最大几个
单靠 find 列出的文件可能太多,建议结合 du 排序,一眼锁定“罪魁祸首”:
find /var/log -type f -size +100M -exec du -h {} \; | sort -hr | head -n 10
这个组合能列出 /var/log 下超过100MB的文件,并按大小倒序排前10个。比单纯 find ... +1G 更灵活——因为有些问题日志可能还没到1GB但已占几十GB(比如未轮转的 messages 或 audit.log)。
安全清理:删、清空、还是截断?
找到目标文件后,别急着 rm。根据场景选方式:
- 确认无用且无进程占用 → 直接
rm -f /path/to/file - 是活跃日志,不能删但要腾空间 → 用
truncate -s 0 /path/to/file清空内容(保留文件句柄,不中断写入) - 想保留文件但确保不残留换行符 → 用
> /path/to/file(比echo >更干净) - 发现
df -h显示已删但空间未释放 → 运行lsof +L1或lsof | grep deleted查被删除但仍被进程打开的文件,然后重启或 kill 对应进程
预防再次爆满的小技巧
清理完别忘了加固:
- 检查
/etc/logrotate.conf和/etc/logrotate.d/下配置,确保关键日志启用了轮转和压缩 - 对临时目录(如
/tmp、/var/tmp)设置systemd-tmpfiles自动清理策略 - 定期用
du -sh /* 2>/dev/null | sort -hr快速看哪个一级目录异常膨胀


















