linux无法内置生成磁盘空间趋势预测报告,必须通过脚本实现:每小时用df -h采集use%和时间戳追加至csv日志,统一用df数据建模(避免du与df不一致),再基于历史数据线性拟合估算耗尽时间。

Linux 没有内置命令能直接生成「磁盘空间占用趋势预测报告表」——这不是一个实时统计类问题,而是需要历史数据采集 + 时间序列建模的分析任务。系统本身不记录空间变化日志,更不会自动拟合增长曲线或预测耗尽时间。
df 和 du 都是瞬时快照,无法推导趋势;所谓“预测”,必须依赖外部脚本周期性采集、存储、比对。
怎么用 shell 脚本实现基础趋势采集
你得自己搭一个最小可行的数据管道:
- 每小时运行一次
df -h /,提取Use%列和时间戳 - 把结果追加到 CSV 文件(如
/var/log/disk-usage.log) - 用
awk或grep提取最近 7 天数据,人工估算线性增速
示例采集脚本(放入 /usr/local/bin/track-disk.sh):
#!/bin/bash
echo "$(date '+%Y-%m-%d %H:%M'),$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')" >> /var/log/disk-usage.log
然后设为 cron 任务:
0 * * * * /usr/local/bin/track-disk.sh
注意:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
df -h /的第二行才是根分区数据,NR==2是关键 - 不要用
df -h | grep '/$',某些发行版挂载点末尾带空格或换行,匹配不可靠 - 日志路径需确保写入权限,建议用
root运行或提前chown
为什么不能只靠 du 做趋势判断
du 统计的是文件实际占用,但和 df 显示的“已用空间”常不一致,原因包括:
- 已删除但进程仍打开的文件(
lsof | grep deleted可查) - ext4/xfs 的预留空间(默认 5%,
df计入已用,du不计入) - tmpfs、overlayfs 等虚拟文件系统不被
du统计 - 日志轮转未触发压缩,
du算的是原始大小,而df看的是块设备真实占用
所以趋势基线必须统一用 df,否则斜率会漂移。
预测逻辑要避开的坑
真正做预测时,别直接套用简单线性回归:
- 磁盘增长通常不是匀速的(例如日志突增、备份任务、容器镜像拉取)
-
df输出含 root 预留空间,当使用率接近 95% 时,剩余可用空间下降会加速(因预留部分不再“可用”) - 如果挂载点是 LVM 或 ZFS,底层空间池可能还有余量,
df显示的“满”只是逻辑卷满,不是物理盘满
最简实用策略:
- 只盯
df -h中连续 3 天增幅 > 5% 的挂载点 - 对该挂载点跑
du -sh --max-depth=1 /path/* 2>/dev/null | sort -hr | head -n 5定位突增目录 - 不要依赖单次预测值,重点看“最近 24 小时增量是否突破历史 P95”
预测本身容易,但误判代价高;真正卡住运维节奏的,往往不是算法不准,而是没确认 df 和 du 差值来源。










