根分区三天前还有四十个 G 再看只剩几百兆 查下来是一个每分钟跑的任务 把每次的调试输出都追加进同一个文件。日志里能对上时间点,这种反而好排。

crontab 只写了命令没有重定向 脚本自己也用追加重定向 每天几百万行只增不减 又没有做轮转 磁盘就被慢慢吃光 等发现时已经写不进去了。这一点先确认清楚,后面就不用反复试。

*/1 * * * * /bin/bash /opt/jobs/poll.sh \
  >> /var/log/poll.log 2>&1
# /etc/logrotate.d/poll
/var/log/poll.log {
  daily rotate 7 compress missingok }

「cron 输出重定向」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

处理上按这个顺序:输出统一重定向到日志文件并带上 2>&1 别丢进邮件;交给 logrotate 按天切割日志文件 同时限制保留份数和单文件大小;调试输出改成按开关控制 线上环境默认直接关掉。

结果对不对很好判断,日志文件按天滚动 保留份数受控 根分区占用不再持续上涨。

作者 9823189