CRS

机柜 / U40

调度 · 2026-07-03 · 6 分钟

crontab 和 systemd timer

cron 很老,也足够。它不管你开机没开机,错过了就是错过了。适合:日志切割、缓存预热、那些晚十分钟也没人死的事。

systemd timer 认账。机器在窗口里关机,起来之后它会补跑——如果你写了 Persistent=true。这不是体贴,这是承诺。承诺之前先问:补跑会不会把积压一次性倒进生产。

我怎么选

# /etc/systemd/system/rotate-certs.timer
[Timer]
OnCalendar=Tue *-*-* 04:10:00
Persistent=true
RandomizedDelaySec=8min

RandomizedDelaySec 是给机房里那几十台一起醒过来的礼貌。没有它,整排机器会在 04:10:00 同时去抢同一个上游。

调试时看 systemctl list-timers,不要看 crontab 注释。注释会撒谎,timer 的 LAST 和 NEXT 不会。

能迟到的任务用 cron;必须醒来的任务用 timer。把这句话写在单元文件上头。

U40 · 绿线,调度。