linux无内置空间增长趋势报告功能,需通过cron定时执行df -h并加时间戳记录日志,再用awk等工具分析变化;df仅提供瞬时快照,无法反映历史增长,真正关键的是高频采集与及时干预。

Linux 本身不自带“空间增长趋势报告”功能,必须靠组合命令 + 定时采集 + 简单分析来实现。没有现成的 df --trend 或类似命令。
为什么 df 命令不能直接看趋势
df 是快照式工具,每次运行只返回当前时刻各挂载点的使用率(Use%)、已用/可用块数。它不记录历史,也不对比变化。所谓“增长趋势”,本质是多个时间点的 df -h 结果做差值和排序——这一步得人来补。
- 直接执行
df -h只能看到“现在用了多少”,看不到“比昨天多了多少 GB” - 如果只跑一次
du -sh /var/log,也无法判断这个目录是不是最近三天涨了 40% - 很多运维误以为
df -i能反映日志增长,其实 inode 耗尽常由小文件爆炸引起,和大文件增长不是一回事
用 cron + df + 时间戳生成简易趋势日志
最轻量、无需额外安装的方式:每小时把 df -h 输出追加进一个带日期的文件,后续用 awk 或 Excel 拉时间轴。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先建日志目录:
mkdir -p /var/log/df-history - 添加定时任务:
0 * * * * df -h | awk 'NR>1 {print strftime(\"%Y-%m-%d %H:%M\"), $0}' >> /var/log/df-history/df-$(date +\%F).log 2>/dev/null - 关键点:
NR>1跳过表头,strftime插入时间戳,避免依赖 shell 的$(date)在 cron 中失效 - 查看某分区最近 5 次变化:
grep '/$' /var/log/df-history/df-*.log | tail -5
快速识别“正在涨”的目录(非全盘扫描)
比起等 du 扫完整个 /var,更实用的是盯住已知高危路径的 mtime + size 双维度变化。
- 查过去 24 小时内变大的日志文件:
find /var/log -type f -mtime -1 -size +10M -ls 2>/dev/null - 查被进程打开但已删除、仍在写入的“幽灵文件”(常见于未轮转的 journal 或 nginx access.log):
lsof +L1 | grep deleted - 确认某个文件是否在持续写入:
ls -l /var/log/syslog; sleep 10; ls -l /var/log/syslog—— 如果大小变了,说明活跃增长
真正要警惕的不是“空间多”,而是“增长快且不可控”
一个 /var/log/journal 从 2GB 涨到 8GB 可能只花 3 小时,但 df -h 每次都只告诉你“用了 65%”。趋势的价值在于提前干预,而不是事后归因。所以采集频率比图表美观重要得多:每 15 分钟存一次 df -B1 /(字节级精度),比每天手动跑一次 ncdu 有用得多。










