Cron every minute

* * * * *

* * * * * runs a job once a minute, every minute of every day. All five fields (minute, hour, day of month, month, day of week) are *, which means “any value”, so every minute matches.

When it fires

At the start of each minute, second :00. Checked at 09:58 UTC, the next five runs are:

09:59  10:00  10:01  10:02  10:03

Cron can’t go below a minute. For every 30 seconds, run the job twice and delay the second: * * * * * sleep 30; /usr/local/bin/job.sh, next to a line without the sleep.

Keep an eye on overlap

A job that sometimes takes longer than a minute will start again before the last run ends. Wrap it in a lock so runs never pile up: * * * * * flock -n /tmp/job.lock /usr/local/bin/job.sh.

The same schedule elsewhere

  • GitHub Actions: not possible. Five minutes is the shortest interval a scheduled workflow gets.
  • Kubernetes CronJob: schedule: "* * * * *", with concurrencyPolicy: Forbid to skip a run while the last one is still going.
  • AWS EventBridge: rate(1 minute), or cron(* * * * ? *).
  • systemd timer: OnCalendar=minutely.
  • Spring @Scheduled: 0 * * * * *; Spring’s first field is seconds.

Try it in the Cron Builder

Every minute

Read as a crontab line, where Sunday is 0 or 7.

minutehourday of monthmonthday of week
*****

Next runs

Working out the next runs from your clock…

Runs in your browser. Nothing you enter is sent anywhere.