Cron every minute during a single hour: * 3 * * *
* 3 * * * runs once a minute for sixty consecutive minutes, from 03:00:00 to 03:59:00, then not again until the following day.
At a glance
- Expression
- * 3 * * *
- Fires
- 60 times a day, all inside one hour. 420 times a week.
- Restricted fields
- Hour pinned to 3. The minute field is open, and so are the three date fields.
- Equivalent macro
- None.
- Run window
- 03:00 through 03:59 inclusive, one run per minute.
- Idle period
- 23 hours between the last run of one day and the first of the next.
In detail
Leaving the minute open and pinning the hour inverts the usual shape of a cron expression. Instead of a run every so often across the whole day, you get a dense burst of sixty runs inside one hour and then nothing. It is the pattern to reach for when a job needs to poll aggressively during a known window rather than continuously.
The usual reason is waiting for something that arrives at an unpredictable moment inside a predictable hour: a partner file dropped some time after 03:00, a nightly export whose finish time varies, a lock that clears once the backup completes. Polling every minute for an hour finds it quickly and costs sixty cheap runs rather than 1,440.
The script should exit immediately when there is nothing to do, and it should stop doing work once it has succeeded. Without that, the remaining runs of the hour repeat whatever the first successful one did. A marker file keyed to the date is the simplest guard, checked at the top of the script and written on success.
The pattern extends naturally. * 3-4 * * * doubles the window to two hours and 120 runs, and * 3 * * 1-5 restricts the burst to weekdays and 300 runs a week. Both keep the same shape: open minute, restricted hour, and a date restriction that decides which days get a burst.
Examples
* 3 * * ** 3 * * * [ -f /var/run/import.done ] || /opt/app/bin/try-import.shtry-import.sh should create /var/run/import.done on success, and something should remove it each evening.
* 3-4 * * 1-5 /opt/app/bin/try-import.sh120 runs a weekday, 600 a week.
Things that catch people out
- Sixty runs in an hour with no exit guard means sixty repeats of whatever the job does. Make the script idempotent before using this pattern.
- * 3 * * * and 0 3 * * * differ by one character and by a factor of sixty.
- The marker file needs clearing or the burst never does anything again. Clear it on a separate daily schedule rather than inside the same script.
Try it: Cron Expression Parser
Paste any five or six field expression to get a plain English description, a per field breakdown and the next run times in your local time.
Cron Expression Parser
LOCAL · Browser-OnlyParse cron expressions and see the next scheduled run times
Supports 5-field (minute hour day month weekday), 6-field (with seconds), named values (JAN, MON), and @macros (@daily, @hourly, ...)
Use the dropdowns below to build your cron expression visually, or type a custom value in each field.
Human-Readable Description
Every 5 minutes
Field Breakdown
| Field | Allowed | Value | Meaning |
|---|---|---|---|
| Minute | 0-59 | */5 | every 5 minute(s) |
| Hour | 0-23 | * | every hour |
| Day of Month | 1-31 | * | every day of month |
| Month | 1-12 | * | every month |
| Day of Week | 0-7 | * | every day of week |
Related cron expressions
All cron expressions →Cron every minute: * * * * *
* * * * * fires 1,440 times a day, once at the top of every minute. Why it is the fastest a five field crontab goes, and how to stop runs stacking.
Cron every day at 2 AM: 0 2 * * * and daylight saving
0 2 * * * runs once a day at 02:00, the hour many timezones use for daylight saving transitions. What happens when 02:00 is skipped or repeated.
The cron asterisk: what * means in each field
An asterisk matches every value in a field's own range, which differs per field. Why * */1 * * * is every minute and not every hour.
The cron hour field: 0 to 23 on a 24 hour clock
The hour field runs 0 to 23 on a 24 hour clock. Midnight is 0, noon is 12, and 24 is out of range. There is no AM or PM notation.
Cron overnight from 22:00 to 06:00: why 22-6 does not work
A cron range cannot wrap past midnight, so 22-6 is rejected. Split it into 22,23,0-6 to get nine hourly runs across the overnight window.
Cron every weekday: 0 0 * * 1-5
0 0 * * 1-5 runs at midnight Monday through Friday, five times a week. Day numbers, the MON-FRI alias, and why holidays still get a run.
Tools for this
- Cron Expression Parser Free online cron expression parser - parse cron expressions and see the next scheduled run times
- Crontab Generator Free online crontab generator - build cron expressions visually with an intuitive interface