cat /etc/anacrontab # 周期 延迟分钟 标识 命令 1 10 daily.clean /bin/bash /opt/jobs/clean.sh systemctl cat backup.timer | grep Persistent
夜里两点关机做维护 早上八点开机 昨晚的清理任务一次都没执行 日志里整段空缺 只能干等第二天同一时间。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,crontab 只管时间点到了才触发 错过的那次不会补 机器不在线就直接跳过 这种场景要靠 anacron 或者 systemd 的持久化选项 两者行为差别不小。
这次卡住的地方就在「anacron 补跑」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:把任务改写到 /etc/anacrontab 里 让机器重启后也能补跑错过的任务;或者给 systemd timer 打开 Persistent 记住上次执行时间 开机后自动补跑一次;补跑只适合幂等任务 有副作用的要先评估再开。
改完只确认一件事:关机错过后开机十分钟内任务补跑一次 日志里能对上补跑记录。
