The expression
*/5 * * * *
└── minute: every 5th minute
*/5 * * * * fires at minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 of every hour — 12 times per hour, evenly spaced. The */N step syntax means "every Nth value starting from the field's minimum," not "N times total" — a distinction that matters once N doesn't evenly divide the field's range.
Why */5 and not 0,5,10,...,55
Both produce an identical schedule — */5 is just shorthand for the equivalent comma-separated list. Step syntax reads more clearly and is less error-prone to write by hand, especially for finer intervals, but they're functionally the same expression underneath.
Common short intervals
| Need | Expression |
|---|---|
| Every minute | * * * * * |
| Every 2 minutes | */2 * * * * |
| Every 5 minutes | */5 * * * * |
| Every 10 minutes | */10 * * * * |
| Every 15 minutes | */15 * * * * |
| Every 30 minutes | */30 * * * * |
The step-value trap: uneven divisors
*/7 * * * * does not run every 7 minutes cleanly across the hour — it runs at minutes 0, 7, 14, 21, 28, 35, 42, 49, 56, then wraps back to 0 at the top of the next hour, producing a shorter gap between minute 56 and the next hour's minute 0 (only 4 minutes, not 7). Step values that don't evenly divide 60 produce this same irregular wraparound — worth checking explicitly before relying on a "every N minutes" schedule for anything timing-sensitive.
Common mistakes
- Assuming any
*/Nvalue produces a perfectly even interval. Only divisors of 60 (2, 3, 4, 5, 6, 10, 12, 15, 20, 30) produce a clean, unbroken repeating interval across the hour boundary. - Running a job "every 5 minutes" without checking overlap risk. If a single execution can take longer than 5 minutes, overlapping runs can stack up — most schedulers don't prevent this automatically unless configured to skip if the previous run hasn't finished.
- Forgetting minute-level cron still depends on the system clock's actual granularity and load — under heavy load, the exact trigger moment can drift by a few seconds, which matters for latency-sensitive jobs.
FAQ
Does */5 mean "5 minutes from now"?
No — it means "every 5th minute value," aligned to the hour (0, 5, 10, ...), not relative to whenever the schedule was created or deployed.
Why does */7 produce an uneven schedule?
Because 7 doesn't evenly divide 60 — the sequence resets at the top of each hour regardless of where the last step landed, creating a shorter final gap.
What's the shortest interval standard cron supports?
One minute (* * * * *) — anything sub-minute needs an application-level timer or a Quartz-style scheduler with a seconds field.
Verify the exact trigger minutes for any interval with the Cron Expression Descriptor.