cron 与夏令时:一年两次的意外
在有夏令时的时区,0 2 * * * 这样的任务一年会出两次问题:
- 春季进入夏令时,2:00–3:00 这一小时不存在,任务被跳过。
- 秋季退出夏令时,1:00–2:00 出现两次,任务可能执行两次。
对中国用户,如果服务器时区是 Asia/Shanghai 就没这个问题;但很多云主机默认 UTC,而业务按本地时间跑,就更容易踩。
往 0 2 * * * 里写任务时,先确认 timedatectl 的时区。跨时区团队统一用 UTC 排程,展示层再转换,能避免这类问题。
如果任务必须按本地时间且不能漏,用 systemd timer 的 OnCalendar=*-*-* 02:00:00 Asia/Shanghai,时区显式写进规则,比依赖系统时区清楚。