服务器磁盘又满了?df、du、journalctl 三板斧快速定位
半夜收到监控告警“磁盘使用率 92%”,别急着扩容,先花五分钟定位到底是谁吃掉了空间。下面三条命令,基本能覆盖九成场景。
一、先看大盘:df -h
df -h 看每个挂载点的使用率。重点看 Use% 和 Mounted on 两列,先确认是哪块盘满了。很多新手一上来就 du /,在根目录满扫半天,效率很低。先 df 定盘,再 du 定目录,顺序别反。
二、逐层下钻:du 排序
锁定目录后,用 du 配合排序看子目录大小,一层层往下钻:
du -sh /var/* | sort -rh | head -10
几秒钟就能揪出最大的几个目录。常见的“凶手”:/var/log 下的旧日志、/var/lib/docker 的悬空镜像和容器日志、/tmp 堆积的临时文件、某个应用的 core dump。
三、日志专项:journalctl
systemd 的日志默认存在 /var/log/journal,长期不清理会膨胀到几个 G。先看占用:
journalctl --disk-usage
再按服务看谁在刷屏:
journalctl -p err -b --no-pager | head -30
清理时别直接删文件,用 journalctl --vacuum-size=200M 或 --vacuum-time=7d 让系统自己回收,安全又干净。
四、两个真实踩坑
- Docker 容器日志:某个容器的 json-file 日志几个月没轮转,单文件 18G。治标:truncate -s 0 容器日志文件;治本:在 daemon.json 里配 log-opts(max-size、max-file),让日志自动轮转。
- 被删掉但没释放的文件:du 和 df 对不上时,用 lsof | grep deleted 看看——进程还 holding 着已删除文件的句柄,空间不会释放。重启对应进程即可。
五、小结
df 定盘 → du 定目录 → journalctl 查日志,三步走完,九成磁盘问题都有答案。最后一条铁律:删文件前先确认归属,生产环境不确定的文件先 mv 到别处观察一天,别直接 rm -rf。磁盘问题不可怕,可怕的是慌起来乱删。
- 点赞
- 收藏
- 关注作者
评论(0)