* * * * * 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: "* * * * *", withconcurrencyPolicy: Forbidto skip a run while the last one is still going. - AWS EventBridge:
rate(1 minute), orcron(* * * * ? *). - systemd timer:
OnCalendar=minutely. - Spring
@Scheduled:0 * * * * *; Spring’s first field is seconds.