当磁盘使用率超阈值时,应自动压缩旧日志或临时文件,核心是“及时干预+可控清理”:用df -p和awk提取指定分区(如/var)使用率,find筛选7天前大日志,gzip安全压缩并校验,加dry_run开关、释放验证和告警兜底。

当磁盘使用率超过设定阈值时,自动压缩旧日志或临时文件是运维中常见且实用的策略。关键不是“一劳永逸”,而是“及时干预+可控清理”——既要避免磁盘爆满导致服务中断,又要防止误删关键数据或过度压缩影响排查。
监控磁盘使用率并触发条件
用 df -h 获取挂载点使用率,提取百分比数值(去掉 % 符号),再与阈值比较。推荐监控 /var 或 /home 等易膨胀目录所在分区,而非根分区整体(可能受 /boot 等小分区干扰)。
- 用 df -P /var | awk 'NR==2 {print $5}' | sed 's/%//' 安全提取数字
- 判断时用 -gt 比较整数,例如 [ "$used_pct" -gt 85 ]
- 避免每分钟执行:加锁或用 sleep 配合后台循环,或由 cron 每 5–10 分钟跑一次
定位可压缩的目标文件
不建议无差别压缩整个目录,应聚焦日志类、归档类、缓存类文件。优先选 .log、.out、.tmp 等后缀,且按修改时间筛选“较老但非过期”的文件(如 7 天前)。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 用 find /var/log -name "*.log" -mtime +7 -size +1M 找出符合条件的日志
- 加 -print0 | xargs -0 处理含空格路径,避免命令失败
- 先用 echo 或 ls -lh 预览,确认无误再执行压缩
安全执行压缩并保留原始信息
压缩不是删除,要确保可追溯、可还原。推荐用 gzip(轻量快)或 zstd(高压缩比),并保留原文件名和时间戳。
- 用 gzip -k 压缩后保留源文件(适合调试阶段);生产环境可用 gzip 直接替换,但务必先 touch -r old.log old.log.bak 备份时间戳
- 压缩后校验:用 gzip -t file.log.gz 确认完整性
- 记录操作日志,例如 echo "$(date): compressed $(basename $f)" >> /var/log/disk_clean.log
附加防护机制(强烈建议)
自动化脚本一旦出错,影响远大于手动操作。必须加入人工确认开关、空间释放验证、失败告警等兜底逻辑。
- 设置环境变量 DRY_RUN=1,脚本开头检测,为真则只打印将执行的命令
- 压缩完成后运行 df -P /var | awk 'NR==2 {print $5}' | sed 's/%//',确认使用率下降 ≥3%
- 若未达标或命令返回非零值,用 mail -s "Disk cleanup failed" admin@example.com 发送简短告警
脚本不是越复杂越好,而是越稳越有用。从监控阈值、目标筛选到压缩验证,每个环节都留一手余地,才能真正扛住突发增长。










