Before you ask “why didn’t it run?”
Check four things, in order: the dialect (is that 6 a Saturday or a Friday?), the time zone the scheduler really uses, the day rule (OR or AND), and whether the date fell on a clock change. The Check date tab tests a specific date against every field and tells you which one failed. If the schedule is right, the cause is usually outside cron: the host was down (cron never catches up; systemd Persistent=true and Kubernetes startingDeadlineSeconds do), the command failed without logging, or the environment differed (cron has a minimal PATH, and % must be escaped in crontab).
Try these
Questions
Is Sunday 0 or 7?
In Unix cron and Spring, both. Kubernetes and GitHub accept only 0. In Quartz and AWS, Sunday is 1 and 7 is Saturday.
What happens if both day-of-month and day-of-week are set?
Unix, Kubernetes and GitHub run when either matches (OR) — unless, in Vixie/cronie, one field starts with *. Spring and Jenkins require both (AND). Quartz and AWS forbid setting both.
Does cron run missed jobs after downtime?
No. Classic cron only runs jobs whose time matches while it is running (cronie has limited catch-up after a clock change). Use anacron, systemd timers with Persistent=true, or your platform’s missed-schedule settings.
Can cron run every 30 seconds?
Not with five-field cron. Use a six-field dialect (Quartz, Spring: */30 * * * * *) or two crontab entries where one sleeps 30 seconds first.
Why does @reboot have no next run?
It is not a calendar time: it runs once when the cron daemon starts.