cronuru
Pattern

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
  1. 012026-08-19T14:18:00.000Z
  2. 022026-08-19T14:20:00.000Z
  3. 032026-08-19T14:22:00.000Z
  4. 042026-08-19T14:24:00.000Z
  5. 052026-08-19T14:26:00.000Z
  6. 062026-08-19T14:28:00.000Z
  7. 072026-08-19T14:30:00.000Z
  8. 082026-08-19T14:32:00.000Z
  9. 092026-08-19T14:34:00.000Z
  10. 102026-08-19T14:36:00.000Z

Variations

* * * * *

Every minute

*/5 * * * *

Every 5 minutes

*/10 * * * *

Every 10 minutes

*/15 * * * *

Every 15 minutes

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.