Why I moved the last cron jobs to systemd timers
Cron is fine until a job overlaps itself, fails silently, or needs to run after a missed window.
What timers give you
Persistent=trueruns a missed job after boot.- A service unit cannot start twice, so overlap is impossible.
- Output lands in the journal with the unit name attached.
RandomizedDelaySecspreads load across hosts.
[Timer]
OnCalendar=*-*-* 03:20:00
RandomizedDelaySec=15m
Persistent=true
The one annoyance
Two files per job. A small template unit with an instance name removes most of the repetition.
Check schedules with systemctl list-timers and test expressions with systemd-analyze calendar.