*/15 * * * * runs the job four times an hour: at minute 0, 15, 30 and 45, in every hour of every day, which comes to 96 runs a day. Fifteen divides 60 evenly, so the gap stays the same across the hour boundary — a property not every step width has.
What is a quarter-hour schedule good for?
It is the usual compromise between freshness and load: synchronising mailboxes, refreshing a cache, pulling exchange rates, collecting metrics. Data is at most fifteen minutes old, and a job that occasionally takes two or three minutes still has plenty of room before the next start. Monitoring dashboards with a fifteen-minute grid line up neatly with it.
Why does the server get busy at :00, :15, :30 and :45?
Because everyone picks the same round minutes. On a machine with a dozen cron entries, half of them fire at minute 0, and backups, log rotation and monitoring agents join in. Spreading the load costs one character: 3-59/15 keeps the quarter-hour rhythm but runs at 3, 18, 33 and 48 instead.
How do I restrict it to working hours?
Narrow the hour and weekday fields: */15 8-18 * * 1-5 runs every quarter of an hour between 8 a.m. and 6:59 p.m., Monday through Friday. Note the hour range is inclusive on both ends, so 8-18 covers the whole 18th hour up to 18:45 — a frequent off-by-one when people expect it to stop at six.
How to add the expression
- Decide whether the job may run at night; if not, add an hour range such as 8-18.
- Add the line */15 * * * * plus your command to the crontab and save it.
- If the machine already has several jobs, shift yours with 3-59/15 so they do not all start together.
- Compare the next run times shown above with what your monitoring expects.