Every 2 Hours
0 */2 * * * 0 0 */2 * * ? 0 */2 * * * 0 */2 * * ? * 0 0 */2 * * * 0 */2 * * * Runs every 2 hours at the top of the hour — 00:00, 02:00, 04:00, …, 22:00. 12 invocations per day.
Use in your stack
# Run every 2 hours
0 */2 * * * /usr/local/bin/sync.sh
{ "cron": "0 0 */2 * * ?", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
name: sync
spec:
schedule: "0 */2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: sync
image: my-image:latest
restartPolicy: OnFailure
cron(0 */2 * * ? *)
@Scheduled(cron = "0 0 */2 * * *")
public void every2Hours() { /* ... */ }
on:
schedule:
- cron: '0 */2 * * *'
Next runs
Pick a timezone to see when this expression fires next.
Next 10 runs
- 012026-08-19T16:00:00.000Z
- 022026-08-19T18:00:00.000Z
- 032026-08-19T20:00:00.000Z
- 042026-08-19T22:00:00.000Z
- 052026-08-20T00:00:00.000Z
- 062026-08-20T02:00:00.000Z
- 072026-08-20T04:00:00.000Z
- 082026-08-20T06:00:00.000Z
- 092026-08-20T08:00:00.000Z
- 102026-08-20T10:00:00.000Z
Variations
Common use cases
- Periodic data syncs between systems where 2-hour lag is fine.
- Cache rebuilds for moderately stale data.
- Sending periodic digest notifications to operators.
- Retrying failed background jobs on a slow cadence.
Gotchas
- `*/2` in the hour field starts from 0, so it always fires on **even hours**. To fire on odd hours (01:00, 03:00, …) use `0 1-23/2 * * *` — see [every odd hour](/every-odd-hour).
- AWS EventBridge needs the 6-field form: `0 */2 * * ? *`.
- Quartz needs seconds + ?: `0 0 */2 * * ?`.
0 */2 * * * fires twelve times a day, on even hours. A common middle-ground schedule for syncs and rebuilds that don’t need hourly freshness but shouldn’t go a quarter-day between runs.
Frequently asked questions
What does `0 */2 * * *` mean?
Minute `0` and hour `*/2` mean "at minute 0 of every 2nd hour starting from 0." So the job fires at 00:00, 02:00, 04:00, 06:00, 08:00, 10:00, 12:00, 14:00, 16:00, 18:00, 20:00, and 22:00 — 12 invocations per day.
How do I run every 2 hours starting from 01:00 instead of 00:00?
Use `0 1-23/2 * * *` — the range `1-23` limits the hour field, then `/2` steps through it by 2. This fires at 01:00, 03:00, 05:00, …, 23:00. The `*/2` shorthand always starts from the field's minimum (0 for hours).
Is `0 */2 * * *` the same as `0 0,2,4,6,8,10,12,14,16,18,20,22 * * *`?
Yes — functionally identical. The `*/2` is shorthand for the explicit list. Use whichever your team finds more readable in the surrounding code.
More hours schedules
Other patterns on the same cadence — or browse every schedule.