Linux 服务器磁盘告警别慌:du/find 三步定位大文件并安全清理
上周半夜收到一条监控短信:服务器磁盘使用率超过 85%。登录一看,根分区只剩不到 2G,可用空间岌岌可危。新手最容易犯的错是看到大就删,万一删的是业务日志还没备份,或者正在被进程占用的文件,删了空间还不释放。本文分享一套安全流程,三步定位、确认后再清。
第一步:先看大盘,确认是哪个分区满了。用 df -h 看每个挂载点的使用率和剩余空间,重点看 Use% 最高的那个。如果是 / 根分区满,问题可能藏在 /var/log、/tmp 或 Docker 的 /var/lib/docker 里。
第二步:顺藤摸瓜找大目录。用 du -h --max-depth=1 /var 2>/dev/null | sort -hr | head -10,从最可疑的分区一级一级往下钻。比如发现 /var/lib/docker 占了 30G,就继续 du -h --max-depth=1 /var/lib/docker | sort -hr | head。sort -hr 按人类可读的单位排序,head 取前 10,大户一目了然。加 2>/dev/null 是为了屏蔽权限不足的报错噪音。
第三步:精准定位大文件。用 find /var/log -type f -size +500M -exec ls -lh {} \; 直接揪出大于 500M 的文件。找到目标后先别急着 rm,先做三件事:第一,用 lsof | grep <文件名> 确认有没有进程正在写它;第二,如果是日志,先 cp 备份一份到别处或压缩归档;第三,正在被占用的大日志不要直接删除,用 > 文件名 或 truncate -s 0 文件名 清空,这样进程句柄不断,空间立刻释放,也不会丢业务数据。
清理完再跑一遍 df -h 确认使用率降下来。最后建议顺手做两件事防复发:给 logrotate 配好日志轮转,避免日志无限膨胀;对 Docker 环境定期跑 docker system prune 清理悬空镜像和停止的容器。
磁盘满看似小事,半夜真能叫醒人。记住流程:df 定分区、du 找大户、find 揪文件,先备份再清空,别直接 rm。熟练之后,整个过程不到五分钟。
- 点赞
- 收藏
- 关注作者
评论(0)