Cron expression cheat sheet
To run a job every five minutes in a standard user crontab, use */5 * * * * before the command. It runs at minutes 00, 05, 10, …, 55 of each hour. For example:
*/5 * * * * /usr/local/bin/check-health
This is a wall-clock schedule, not a promise that a slow or failed job will finish within five minutes. Your scheduler may start a new run while the previous one is still active; add locking or job-level concurrency control if that matters.
Five-field syntax
┌ minute (0–59)
│ ┌ hour (0–23)
│ │ ┌ day of month (1–31)
│ │ │ ┌ month (1–12)
│ │ │ │ ┌ day of week (0–7; 0 and 7 are Sunday in common Unix cron)
* * * * *
In a user crontab, a command follows the five fields. A system crontab such as /etc/crontab also has a username field before the command. * means every allowed value, , makes a list, - a range, and / a step through a range.
| Five-field expression | When it runs |
|---|---|
* * * * * |
Every minute |
*/5 * * * * |
Every five minutes at minute 0, 5, 10, and so on |
0/5 * * * * |
Same five-minute marks in cron implementations that accept step syntax |
0 * * * * |
At the start of every hour |
30 9 * * * |
Daily at 09:30 |
0 9 * * 1-5 |
Monday through Friday at 09:00 |
0 0 1 * * |
First day of each month at midnight |
0 0 1 1 * |
January 1 at midnight |
These examples use the scheduler's configured time zone. The Linux crontab(5) manual documents the syntax and extensions for its implementation. Always check the documentation for the scheduler that will actually run your expression.
Two traps: calendar logic and time zones
With common Unix cron, when both day-of-month and day-of-week are restricted, a job runs when either matches. Thus 0 9 1 * 1 runs at 09:00 on the first of each month and on every Monday. It does not mean “the first Monday.” Handle that requirement in the job or use a scheduler with an explicit nth-weekday feature.
Time-zone rules also affect wall-clock jobs. A run scheduled in a missing spring-forward hour may be skipped; a time repeated in autumn may run twice in some cron implementations. If you require an elapsed interval regardless of daylight saving time, consider a UTC schedule or an interval-based scheduler. Test the planned schedule across both transitions for the deployment's actual time zone.
The environment variable CRON_TZ is supported by some cron implementations, but not universally. Check the host's cron documentation before relying on it. The Unix Timestamp tool can help translate a planned execution time into UTC.
AWS and systemd are different schedulers
Amazon EventBridge Scheduler uses six fields: cron(minutes hours day-of-month month day-of-week year). It can evaluate schedules in UTC or a named IANA time zone. To run every five minutes, use cron(0/5 * * * ? *); set --schedule-expression-timezone when creating a local-time schedule. AWS documents how Scheduler handles daylight saving transitions. Legacy EventBridge scheduled rules use UTC; do not assume the same time-zone behavior applies to both services.
systemd timers use OnCalendar expressions instead of five-field cron. For a five-minute wall-clock schedule, OnCalendar=*:0/5 is one possible expression. Check it with systemd-analyze calendar '*:0/5' on the host. Persistent=true concerns catching up missed calendar events after downtime; it does not make the schedule run exactly every five elapsed minutes.
The Cron Expression Generator gives you five-field templates and a copyable expression. It does not validate every scheduler's syntax or calculate future runs; verify the result in your target scheduler before relying on it.