Cron every 10 minutes: */10 * * * *
*/10 * * * * runs six times an hour, 144 times a day, on minutes 0, 10, 20, 30, 40 and 50.
At a glance
- Expression
- */10 * * * *
- Fires
- 144 times a day, 6 times an hour, 1,008 times a week.
- Restricted fields
- Minute only. Every other field is open.
- Equivalent macro
- None.
- Minutes matched
- 0, 10, 20, 30, 40, 50.
- Monthly call volume
- About 4,380 runs in a 30 day month, per host.
In detail
Ten minutes is the point at which a polling job stops being a load concern and starts being a latency concern. Six runs an hour is light enough that nobody notices it on a graph, but the average item waits five minutes before it is picked up, which is the number to check against whatever the job is feeding. If five minutes of lag is acceptable this is usually the right schedule.
The minutes matched are the six that end in a zero, which is also where most humans set manual reminders and where many managed schedulers default. That makes the top and the tens of the hour crowded, so if the job shares a database with anything else on the same cadence, an offset such as 3-59/10 removes the contention without changing the frequency.
For jobs that call a rate limited API, this schedule gives a convenient budget. Six runs an hour means a job may make up to ten calls per run and stay under a limit of sixty an hour, with no burst handling needed. That arithmetic breaks the moment you run the same crontab on a second host, because the limit is usually per account rather than per machine.
Ten minute jobs are long enough that people stop wrapping them in locks, which is exactly when a job that normally takes ninety seconds starts taking twelve minutes because an upstream service is slow. The runtime of a polling job is rarely controlled by the polling job, so treat overlap protection as a property of the schedule rather than of the script.
Examples
*/10 * * * *3-59/10 * * * *Fires at 3, 13, 23, 33, 43, 53.
*/10 * * * * /opt/app/bin/sync.sh > /dev/null || echo "sync failed on $(hostname)"stdout is discarded, so cron only sends mail when the command exits non zero.
Things that catch people out
- */10 is not the same as 0,10,20,30,40,50 in every dialect, but it is in this parser. The difference only shows up in schedulers that treat a step over a range differently.
- Six runs an hour looks harmless until the job is deployed to twenty hosts and the shared endpoint sees 120 identical requests at the same second.
- If the command references a $ variable, remember cron runs with a minimal environment and no shell profile. Use absolute paths and set PATH explicitly at the top of the crontab.
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 5 minutes: */5 * * * *
*/5 * * * * fires 288 times a day at minutes 0, 5, 10 and so on. Why every job on the box lands on the same minute and how 2-59/5 fixes it.
Cron every 15 minutes: */15 * * * *
*/15 * * * * fires 96 times a day on the quarter hours. What happens to the count on the two daylight saving days, and how 7-59/15 spreads the load.
Cron every 30 minutes: */30 * * * *
*/30 * * * * fires 48 times a day at minutes 0 and 30. The half hour is the busiest slot on most servers, and 15,45 costs nothing to move to.
The cron minute field: position, range and behaviour
The minute field runs 0 to 59 and is the first field in a five field expression, or the second when a seconds field is present.
Cron every 20 minutes: */20 * * * *
*/20 * * * * fires 72 times a day at minutes 0, 20 and 40. Why three runs an hour is the practical floor for jobs with a long startup cost.
Cron every 45 minutes: why */45 * * * * does not do it
*/45 * * * * fires at minute 0 and minute 45 only, so the gaps alternate 45 and 15 minutes. Here is the four line crontab that really runs every 45 minutes.
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