Every hour

0 * * * *

Fields

Minute00
Hour*any
Day of month*any
Month*any
Day of week*any

Where to use it

crontab0 * * * * /path/to/script.sh
GitHub Actions- cron: "0 * * * *" (on.schedule)
Kubernetes CronJobschedule: "0 * * * *"

crontab runs in the server’s time zone; GitHub Actions always uses UTC.

Good to know

0 * * * * runs at the top of every hour, the same as @hourly. A common slip is putting the 0 in the hour field: * 0 * * * runs every minute from 00:00 to 00:59. Debian and Ubuntu also run scripts in /etc/cron.hourly at minute 17 via run-parts, which suits jobs that don’t care about the exact minute. Every 2 hours is 0 */2 * * *.

Minute 0 is the busiest moment for every scheduler, so for jobs that call shared services pick another minute, such as 23 * * * *. GitHub Actions warns that runs at the start of the hour are often delayed or even dropped under load. If a run can exceed an hour, wrap it in flock -n, and append output to a log so failures leave a trace.

Open Cron Expression Builder and Explainer