Cron jobs consistently missed after system clock steps backwards due to NTP slewing
Environment
Ubuntu Server 22.04 systems using chrony (chronyd) to sync time to an internal NTP server. Servers run multiple cron jobs scheduled at precise minutes (system crontab and root's crontab). Recently observed during a network outage when clock update slewed time back 4–6 minutes.
Symptoms
Daily maintenance cron jobs scheduled for specific times did not run for the affected hosts when the system clock was slewed backwards by several minutes. The jobs are not executed later (jobs are not backfilled) and there are no cron entries indicating retries.
Observations
Syslog shows chronyd correcting clock by slewing rather than stepping; timestamp of the slewing event precedes the expected cron invocation time. Cron's logs show no attempt to run the jobs at the original scheduled times, and manual invocation runs succeed. systemd timers with Persistent=true were not in use for those tasks. The problem occurred consistently on multiple hosts during the same NTP event.
Already attempted
Restarted the cron daemon, manually ran the missed jobs, changed chrony Configuration to prefer stepping for corrections > 1s using makestep in a test host, and converted one job to a systemd timer with Persistent=true which ran fine after the next time correction.
Question
Why does cron skip jobs when the system clock moves backwards, and what reversible configuration changes should I make to ensure scheduled jobs run reliably across time corrections without risking large sudden system time steps?
Verified community troubleshooting
No answers yet..
Incident analysis
Most likely causes
Summary
Suggested Fixes
Continue troubleshooting
Related troubles
Matched from the title, description and tags