PatternCron

Every 6 hours

A four-times-a-day cadence for cache warms and report refreshes: */6 lands cleanly on 00:00, 06:00, 12:00 and 18:00.

Last updated

Pattern
0 */6 * * *
Open in Crontab Schedule Creator

In plain English

  • Fires at 00:00, 06:00, 12:00 and 18:00
  • 4 runs per day

Why it’s written this way

*/6 in the hour field takes the range 0–23 and keeps every sixth value starting from 0 — 0, 6, 12, 18 — four evenly spaced runs across the day. Minute stays 0, so each one fires on the dot.

Because 6 divides 24 evenly, the step never resets mid-cycle; every day looks identical. That isn't true of every divisor, so it's worth checking that a step actually tiles the field's range before trusting the spacing.

Edge cases to know

  • →Four fixed times a day means every run lands during business hours somewhere in the world; if the job is heavy, that's worth knowing before it competes with real traffic on a shared box.
  • →A deploy or restart that happens to land near one of the four windows can eat that run silently — there's no cron-level alert for a job that never started.
  • →If the real requirement is 'four times spread through my working day' rather than 'every six hours counting from midnight,' this expression is the wrong shape — list four explicit hours instead, e.g. 0 8,12,16,20 * * *.

Part by part

0 */6
Minute zero of every sixth hour, counting from zero — so 00:00, 06:00, 12:00 and 18:00. The step always starts at the bottom of the range, not from when you installed it.
* * *
Calendar fields open, so the four daily runs repeat every day of the year.

Common mistakes

  • 0 */6 * * * expecting it to start six hours from now

    Steps count from the beginning of the field's range, not from installation time. Adding this at 09:00 means the next run is 12:00, three hours away, which surprises people testing a new schedule.

  • 0 */7 * * *

    Seven does not divide 24, so the runs are 00:00, 07:00, 14:00 and 21:00 — and then only three hours to midnight. Any step that does not divide its range evenly produces an uneven gap at the boundary.

  • 0 0,6,12,18 * * * written as 0 0-18/6 * * *

    Valid, and it excludes nothing while looking like it restricts a window. If the intent is genuinely all day, */6 says so more plainly.

Questions

Which four times does this actually fire?

Midnight, 06:00, 12:00 and 18:00 in the daemon's timezone. Writing them out in a comment above the line saves the next reader from working it out, particularly where the step is less obvious than six.

How does it behave across a daylight saving change?

The runs stay pinned to those clock times, so the day of the change has either a five-hour or a seven-hour gap. For anything measuring intervals, run the daemon in UTC and convert for display instead.

Should I use a step or a list here?

A step, since six divides the day evenly and the intent is obvious. Lists earn their place when the times are irregular, which no step can express.

What if a run takes longer than six hours?

The next one starts on top of it. Six hours feels like ample headroom right up until a data volume doubles, so a lock is worth adding while it still seems unnecessary.

Related in Patterns