To run a cron job every 5 minutes, use this expression:
*/5 * * * *
It fires at minute 0, 5, 10, and so on up to 55, every hour of every day: 288 runs a day. In a crontab, the full line looks like this:
*/5 * * * * /usr/local/bin/check.sh >> /var/log/check.log 2>&1
What each field means
| Field | Value | Meaning |
|---|---|---|
| Minute | */5 | every 5th minute, starting at 0 |
| Hour | * | every hour |
| Day of month | * | every day |
| Month | * | every month |
| Day of week | * | every day of the week |
Variants
| Schedule | Expression |
|---|---|
| Every 5 minutes, written out | 0,5,10,15,20,25,30,35,40,45,50,55 * * * * |
| Every 5 minutes, offset to :02, :07, :12... | 2-59/5 * * * * |
| Every 5 minutes between 9:00 and 17:55 | */5 9-17 * * * |
| Every 5 minutes on weekdays, business hours | */5 9-17 * * 1-5 |
Quartz (seconds first, ? required) | 0 0/5 * * * ? |
Spring @Scheduled (seconds first) | 0 */5 * * * * |
| AWS EventBridge | rate(5 minutes) or cron(0/5 * * * ? *) |
Platform notes
- Linux crontab: runs in the server's local time zone. A
%in the command must be escaped as\%, because cron turns it into a newline. - GitHub Actions: every 5 minutes is the shortest interval allowed. Schedules use UTC unless you add a
timezone, and runs can be delayed during busy periods, especially near the top of the hour. See GitHub Actions cron. - Kubernetes CronJob:
schedule: "*/5 * * * *". AddconcurrencyPolicy: Forbidif a run can take longer than 5 minutes. - Cloudflare Cron Triggers: supported as written, always in UTC. On the Paid plan, a trigger that runs more often than hourly gets up to 30 seconds of CPU time (as of October 2026).
- Vercel: needs a Pro or Enterprise plan. Hobby projects are limited to once a day, and a more frequent expression fails the deployment.
- Jenkins: prefer
H/5 * * * *, which spreads jobs across the hour instead of starting them all at :00. See Jenkins cron.
Common mistakes
5 * * * *runs once an hour, at minute 5. The slash is what makes it repeat.- Jobs that take longer than 5 minutes pile up. Use a lock, as in the FAQ.
- Cron starts commands with a minimal environment and a short
PATH, so use absolute paths to binaries and scripts.
Running an AI agent every 5 minutes
You can, but every run costs tokens. Most agent checks work as well hourly, or every 5 minutes only during working hours with */5 9-17 * * 1-5. The scheduled skills page shows how to put a Claude Code or Codex skill on any of these schedules.
Questions
Does */5 start counting from when I saved the crontab?
No. Steps count from the start of the field's range, so */5 in the minute field always means minutes 0, 5, 10 and so on, whatever time you installed it.
How do I run a GitHub Actions workflow every 5 minutes?
Use cron: '*/5 * * * *' under on.schedule. Five minutes is the shortest interval GitHub allows, and runs can start late or be dropped when Actions is busy, so don't rely on exact timing.
How do I stop runs from overlapping?
On Linux, wrap the command in flock -n /tmp/job.lock ... so a new run exits if the last one is still going. In Kubernetes, set concurrencyPolicy: Forbid on the CronJob.
Can cron run every 5 seconds?
Not standard cron; its smallest unit is one minute. Use a scheduler with a seconds field, such as Spring (*/5 * * * * *), or a loop or systemd timer instead.