Every 2 Minutes
*/2 * * * * 0 */2 * * * ? */2 * * * * */2 * * * ? * 0 */2 * * * * Runs every 2 minutes — at :00, :02, :04, …, :58 of every hour. 30 invocations per hour, 720 per day.
Use in your stack
# Run every 2 minutes
*/2 * * * * /usr/local/bin/poll.sh
{ "cron": "0 */2 * * * ?", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
name: poll
spec:
schedule: "*/2 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: poll
image: my-image:latest
restartPolicy: OnFailure
cron(*/2 * * * ? *)
@Scheduled(cron = "0 */2 * * * *")
public void every2Minutes() { /* ... */ }
Next runs
Pick a timezone to see when this expression fires next.
Next 10 runs
- 012026-08-19T14:18:00.000Z
- 022026-08-19T14:20:00.000Z
- 032026-08-19T14:22:00.000Z
- 042026-08-19T14:24:00.000Z
- 052026-08-19T14:26:00.000Z
- 062026-08-19T14:28:00.000Z
- 072026-08-19T14:30:00.000Z
- 082026-08-19T14:32:00.000Z
- 092026-08-19T14:34:00.000Z
- 102026-08-19T14:36:00.000Z
Variations
Common use cases
- Near-real-time polling of an external API or queue.
- Frequent health checks where every-minute is too noisy.
- Rapidly draining a work queue with light per-run cost.
- Tight monitoring loops during an incident.
Gotchas
- 720 runs per day — watch log volume and overlapping executions.
- GitHub Actions does NOT support `*/2 * * * *` — minimum interval is 5 minutes.
- AWS EventBridge needs the 6-field form: `*/2 * * * ? *`.
- If a run can take longer than 2 minutes, guard against overlap with a lockfile or `concurrencyPolicy: Forbid`.
*/2 * * * * is a high-frequency polling schedule — twice as fast as every-5-minutes, half as noisy as every-minute. Useful when you need data fresh within a couple of minutes but don’t want 1,440 runs a day.
Frequently asked questions
What does `*/2 * * * *` mean?
`*/2` in the minute field means "every 2nd minute starting from 0," so the job fires at :00, :02, :04, …, :58 of every hour. The remaining four asterisks mean any hour, any day of the month, any month, any day of the week — 30 runs per hour, 720 per day.
Can I run every 2 minutes on GitHub Actions?
No. GitHub Actions enforces a 5-minute minimum schedule interval. `*/2 * * * *` is technically valid syntax but will not trigger. The fastest valid GitHub Actions schedule is `*/5 * * * *`.
Is `*/2 * * * *` the same as `0,2,4,...,58 * * * *`?
Yes — `*/2` is shorthand for the explicit even-minute list `0,2,4,6,...,58`. Either form fires at the same 30 times per hour. The step form is far more compact.
How do I avoid overlapping runs at this frequency?
At 2-minute intervals, a job that occasionally takes longer than 2 minutes will spawn overlapping instances. Guard with `flock` on Linux, set `concurrencyPolicy: Forbid` on a Kubernetes CronJob, or check for an existing run at the top of your script.
More minutes schedules
Other patterns on the same cadence — or browse every schedule.