Linux磁盘空间告警应按“分区→目录→进程→文件”链路排查:先用df -h定位高占用分区,再用du -sh * | sort -hr找大目录,接着用lsof +L1查已删未释放文件,最后针对Docker、日志、MySQL等场景专项处理。
Linux磁盘空间告警?别急着删日志,先定位真实“罪魁祸首”。核心思路就一条:
从大到小、由表及里、聚焦活跃写入路径
。
一、快速定位哪个分区快满了
用
复制 df -h
看整体水位,重点关注
Use% 列
。注意看 Mounted on 列——/var、/home、/tmp、/ 是高频爆满区。如果看到某分区 95%+,立刻往下查,别跳步。
复制 df -hT
多看一列文件系统类型(如 ext4/xfs),部分场景(如 xfs)需搭配不同命令清理
警惕
复制 df
显示已满但
复制 du
统计不一致——大概率是有进程在删除大文件但句柄未释放(常见于日志轮转异常)
二、揪出谁在“偷偷吃空间”:按目录大小排序
进问题分区根目录(如
复制 cd /var
),执行:
复制 du -sh * | sort -hr | head -20
这条命令直接列出当前层前20个最大子目录,
sort -hr
按人类可读大小逆序排,一眼锁定目标。
若卡在某目录进不去(权限拒绝),加
复制 sudo
:
复制 sudo du -sh * 2>/dev/null | sort -hr | head -10
想看深层嵌套大目录?用
复制 du -sh ./*/** 2>/dev/null | sort -hr | head -10
(bash 4.0+)或分步进入可疑目录再查
三、识别“隐形占空间大户”:已删除但未释放的文件
运行
复制 lsof +L1
(需 root 权限)。输出里带
DEL
标记的文件,就是被 rm 掉但进程还在写的“幽灵文件”,占着空间不放。
Docker Sandbox
创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。
下载
看 PID 列,用
复制 ps -p PID -o pid,comm,cmd
查是哪个进程
常规操作:重启对应服务(如
nginx
、
java
应用);紧急时可直接
复制 kill -HUP PID
尝试重载(对支持该信号的服务有效)
不建议直接清空 /proc/PID/fd/ 下的数字链接——风险高,且多数情况重启更稳妥
四、高频场景速查与应对(照着做就行)
● Docker 占满 /var:
复制 docker system df -v
查镜像、容器、卷用量;清理用
复制 docker system prune -a --volumes
(注意加 --volumes 会删所有未使用卷)
● /var/log 爆满:
先
复制 ls -lt /var/log/
找最新大日志;用
复制 journalctl --disk-usage
看 journald 占用;限制日志大小:
复制 sudo mkdir -p /etc/systemd/journald.conf.d/ && echo -e "[Journal]\nSystemMaxUse=500M" | sudo tee /etc/systemd/journald.conf.d/limit.conf
,再
复制 sudo systemctl restart systemd-journald
● MySQL /var/lib/mysql胀库:
进数据库查大表:
复制 SELECT table_schema,table_name,round(((data_length + index_length) / 1024 / 1024), 2) AS size_mb FROM information_schema.TABLES ORDER BY size_mb DESC LIMIT 10;
;确认后用
复制 OPTIMIZE TABLE
或归档旧数据
基本上就这些。排查不是拼命令数量,而是建立“分区 → 目录 → 进程 → 文件”的链路思维。动手前多看一眼
复制 df
和
复制 du
差异,能避开八成误操作。