Cron Expression to Run Every 25 Minutes
The naive answer is */25 * * * *, but it does not fire a clean 25-minute cadence — it resets at the top of each hour. The honest explanation and a working alternative are below.
The naive expression
*/25 * * * * looks like "every 25 minutes" but the step restarts each hour. It fires at :00, :25, :50, then jumps back to :00 — so the gap between :50 and the next :00 is only 10 minutes, not 25.
Why it drifts
The */25 step counts from 0 within the single minute field (0–59). Because 25 does not divide 60 evenly, the pattern cannot line up across the hour boundary. Any interval that is not a divisor of 60 (like 25, 40, 50) has this problem.
If you need an exact 25-minute gap
Cron alone cannot do a true every-25-minutes schedule. Use a systemd timer with OnUnitActiveSec=25min, or have the job reschedule itself, or accept the :00,:25,:50 approximation if the hourly reset is acceptable.
FAQ
What is the cron expression for every 25 minutes?
*/25 * * * * fires at :00, :25, :50, but resets each hour — it is not a true 25-minute interval.
Why does */25 not run exactly every 25 minutes?
Because 25 does not divide 60, the minute step restarts at the top of each hour, leaving a 10-minute gap from :50 to :00.
How do I get an exact 25-minute interval?
Use a systemd timer with OnUnitActiveSec=25min, or have the job sleep/reschedule itself; plain cron cannot do it.