
磁盘满了得立刻动手,不能等。核心动作就三步:确认哪里满、找到谁占的、快速释放空间。整个过程不需要重启,多数情况5分钟内能缓解。
看哪块盘真满了
先跑这条命令:
df -h
重点看 Use% 这一列,标红或显示 95% 以上的就是问题分区。比如看到 /dev/sda1 挂在 / 上且用了 99%,那根目录就是主战场。注意别被 /tmpfs 或 /dev/shm 干扰——它们是内存虚拟文件系统,不占磁盘。
顺藤摸瓜找大头
进到那个挂载点(比如 cd /),执行:
du -sh /* 2>/dev/null | sort -hr
这会列出所有一级目录大小,从大到小排好。常见“嫌疑对象”有:/var(日志、缓存)、/usr(软件包)、/home(用户数据)、/opt(第三方应用)。假设 /var 占了 32G,就再进去:
cd /var && du -sh * 2>/dev/null | sort -hr
继续往下钻,直到定位到具体目录或文件,比如 /var/log/journal 或 /var/lib/docker。
删得准,别误伤
找到目标后,分情况处理:
- 日志类(如
/var/log/syslog、/var/log/journal):用 truncate -s 0 文件名 清空内容,保留文件和权限,避免服务报错 - 已删除但进程还在写(
lsof | grep deleted能查到):记下 PID,重启对应服务或执行 kill -HUP PID 让它重新打开日志 - 临时文件(
/tmp下):确认无活跃进程依赖后,直接 rm -rf /tmp/* - 旧内核(
/boot满时):用 rpm -q kernel 查已装内核,留最新两个,其余 yum remove kernel-xxx
防复发的小动作
救急完别收工。马上做两件事:
- 给日志加轮转:logrotate 配置好
/etc/logrotate.d/下对应规则,防止再次撑爆 - 检查定时任务:用 crontab -l 和 systemctl list-timers 看有没有脚本反复生成大文件









