Glossary · Definition
Cron
Cron is a Unix utility (and its 5-field syntax) for scheduling recurring jobs. The syntax — `* * * * *` for minute, hour, day-of-month, month, day-of-week — has spread far beyond Linux: GitHub Actions, Vercel, Cloudflare Workers, Kubernetes CronJobs all use it.
Definition
Cron is a Unix utility (and its 5-field syntax) for scheduling recurring jobs. The syntax — `* * * * *` for minute, hour, day-of-month, month, day-of-week — has spread far beyond Linux: GitHub Actions, Vercel, Cloudflare Workers, Kubernetes CronJobs all use it.
What it means
The five fields: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-6 with 0=Sun or 7=Sun depending on system). Each field accepts: a number (5), a range (1-5), a list (1,3,5), a step (*/15 every 15 minutes), or `*` (any). Cron extensions add seconds (Quartz, AWS), year (Quartz, AWS), and special values (@hourly, @daily, @reboot). Cron does NOT understand timezones natively — most cron daemons use the system timezone. For DST and timezone correctness, prefer scheduling tools that explicitly handle it (GitHub Actions runs in UTC; Vercel cron lets you specify TZ).
Advertisement
Why it matters
Cron is the de facto standard for 'do this every N units of time'. The 5-field syntax is dense — a lot of bugs come from mis-reading it. Common gotchas: `*/7 * * * *` doesn't fire every 7 minutes evenly (it fires at minutes 0, 7, 14... 56, 0 — uneven gap between :56 and :00). For tight intervals, use a step that divides 60 (5, 6, 10, 12, 15, 20, 30). For complex scheduling, use a real workflow tool (GitHub Actions, Temporal, Inngest) instead of stuffing logic into cron expressions.
Frequently asked questions
Why doesn't my cron run at midnight on the right day?
Day-of-month + day-of-week are OR'd, not AND'd, in standard cron. `0 0 1 * 1` fires on the 1st of each month AND every Monday. Use systemd-timer or an explicit day calculation if you need AND.
Best tool for testing cron expressions?
crontab.guru is the standard. It explains the schedule in plain English and shows the next 5 fire times.
Modern alternatives?
systemd timers (Linux native, more readable), Quartz (Java enterprise, sub-minute), Temporal / Inngest (workflow engines), Vercel Cron (managed, with logs).