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-07-03T16:52:00.000Z
  2. 022026-07-03T16:54:00.000Z
  3. 032026-07-03T16:56:00.000Z
  4. 042026-07-03T16:58:00.000Z
  5. 052026-07-03T17:00:00.000Z
  6. 062026-07-03T17:02:00.000Z
  7. 072026-07-03T17:04:00.000Z
  8. 082026-07-03T17:06:00.000Z
  9. 092026-07-03T17:08:00.000Z
  10. 102026-07-03T17:10: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.

Browse all cron patterns

Every schedule Cronuru documents, with its expression and code snippets for six dialects.