Cheat Sheets · Cron Cheat Sheet · Cron Every Hour — Crontab Example
Cron Every Hour — Crontab Example
0 * * * *
Runs at minute 0 of every hour — once an hour, on the hour.
Field by field
| Field | Value | Meaning |
|---|---|---|
Minute | 0 | Exactly at minute 0 |
Hour | * | Every hour |
Day of month | * | Every day |
Month | * | Every month |
Day of week | * | Every day of the week |
Hourly jobs anchor the minute field to a single value (0) and leave the hour wildcard. The classic beginner mistake is writing * 0 * * * thinking it means hourly — that actually means "every minute of hour 0", i.e. 60 runs between midnight and 1 AM.
To run at half past every hour instead, change the minute: 30 * * * *. For business-hours-only, constrain the hour range: 0 9-17 * * 1-5 fires on the hour from 9:00 to 17:00 on weekdays.
0 * * * * /usr/local/bin/hourly-rollup.sh
Related schedules
FAQ
What is the difference between 0 * * * * and * 0 * * *?
First: hourly at minute 0. Second: every minute during the 00:00 hour only. Field order is minute-first — this one trip-up causes most "my cron ran 60 times" support tickets.
Is there an @hourly shorthand?
Yes — @hourly is equivalent to 0 * * * *. Shorthands exist for @daily, @weekly, @monthly, @yearly too.
How do I avoid clashing with other hourly jobs?
Offset the minute (25 * * * *) or add jitter inside the script. Everything firing at :00 creates thundering-herd load on shared dependencies.
Stop memorizing — build it interactively
Try this schedule in the Cron EditorFull reference: Cron Cheat Sheet