cron 简单,但日志、依赖顺序、错过补跑这几件事都不好办。systemd timer 主要赢在可观测性:systemctl list-timers 一眼看完下次触发时间,失败直接进 journal。
[Unit]
Description=nightly backup
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
Persistent=true 是关机期间错过的任务在开机后补跑,RandomizedDelaySec 用来错峰。单位文件里写 OnCalendar 时注意时区跟随系统,跨时区部署要显式确认 timedatectl。