*/5 * * * *Fields
| Minute | */5 | 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 |
|---|---|---|
| Hour | * | any |
| Day of month | * | any |
| Month | * | any |
| Day of week | * | any |
Where to use it
| crontab | */5 * * * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "*/5 * * * *" (on.schedule) |
| Kubernetes CronJob | schedule: "*/5 * * * *" |
crontab runs in the server’s time zone; GitHub Actions always uses UTC.
Good to know
*/5 in the minute field runs at minutes 0, 5, 10 and so on up to 55, aligned to the clock, not to when you saved the crontab. Every job on every server using */5 fires at the same second, which can spike a shared database or API; offset busy jobs with 2-59/5, which runs at 2, 7, 12 and onward. Every 10 minutes is */10.
If a run can take more than 5 minutes, guard it with flock -n so copies don’t overlap; in Kubernetes, concurrencyPolicy: Forbid does the same. Cron’s PATH and environment are minimal, so call programs by absolute path and load variables in the script. Append output to a log. GitHub Actions accepts */5 as its minimum, but scheduled runs often start several minutes late under load.