Cron Every 5 Minutes: 5, 10, and 15-Minute Crontab Examples

By 

•

Updated on

•

7 min read

Run Cron Jobs Every 5, 10 or 15 Minutes

When you need to run a script, backup, or maintenance command several times per hour, cron provides a simple recurring schedule. To run a cron job every five minutes, use this expression:

txt
*/5 * * * * command

The */5 value means every fifth minute, so the command runs at minutes 0,5,10,15 and continues through minute 55 of each hour.

This guide shows how to run cron jobs every 5, 10, or 15 minutes, verify that the schedule works, and prevent slow jobs from overlapping.

To preview when an interval like */5 actually fires, try the interactive crontab generator .

Quick Reference

For a printable quick reference, see the crontab cheatsheet .

Cron ExpressionSchedule
* * * * *Every minute
*/5 * * * *Every 5 minutes
*/10 * * * *Every 10 minutes
*/15 * * * *Every 15 minutes
*/30 * * * *Every 30 minutes
0 * * * *Every hour
0 0 * * *Every day at midnight

What */5 Means in Crontab

Each user crontab entry contains five time fields followed by the command to run:

txt
|------------- minute (0-59)
| |----------- hour (0-23)
| | |--------- day of the month (1-31)
| | | |------- month (1-12)
| | | | |----- day of the week (0-7, Sunday is 0 or 7)
* * * * * command

An asterisk matches every allowed value in a field. The slash adds a step, so */5 in the minute field selects every fifth value from 0 through 59. Step values operate only within their field. For example, */35 runs at minutes 0 and 35 of every hour, not once every 35 minutes continuously.

This article uses user crontab syntax. System files such as /etc/crontab and files in /etc/cron.d/ include an additional username field. See the full crontab scheduling guide for the complete syntax and operators.

Run a Cron Job Every 5 Minutes

The recommended expression for running a command every five minutes is:

txt
*/5 * * * * command

Replace command with the full path to the command or script you want to run. For example:

txt
*/5 * * * * /home/user/scripts/check-disk.sh

You can write the same schedule as an explicit minute list:

txt
0,5,10,15,20,25,30,35,40,45,50,55 * * * * command

Both forms produce the same schedule, but */5 is shorter and easier to maintain.

*/5 always starts at minute 0, so every five-minute job on the server fires together on the hour. To spread the load, start the range at a different minute:

txt
2-59/5 * * * * command

This runs at minutes 2,7,12 and onward through 57. The interval is still five minutes, but the job no longer competes with everything else scheduled on the hour.

Run a Cron Job Every 10 Minutes

To run a cron job every 10 minutes, use the step operator in the minute field with a value of 10. Add the following line to your crontab file:

txt
*/10 * * * * command

*/10 evaluates to 0,10,20,30,40,50, so the job runs six times per hour.

Every job using */10 starts at the same six minutes of the hour. Run several of them and they all compete for CPU and disk at once. To offset one, replace the asterisk with a range that starts later:

txt
5-59/10 * * * * command

The job now runs at minutes 5,15,25,35,45,55. The cadence is unchanged, but each run lands five minutes clear of the top of the hour.

Run a Cron Job Every 15 Minutes

To run a cron job every 15 minutes, use the step operator with a value of 15. Add the following line to your crontab file:

txt
*/15 * * * * command

*/15 evaluates to 0,15,30,45, so the job runs four times per hour.

Older crontab files and some hosting control panels write the same schedule as an explicit list:

txt
0,15,30,45 * * * * command

Both forms are equivalent. A quarter-hour schedule suits work that is too heavy for a five-minute loop, such as syncing a remote directory or polling an API that enforces a rate limit.

Run a Cron Job Every Minute

One minute is the shortest schedule cron supports. No step value is needed, because an asterisk in the minute field already matches every value:

txt
* * * * * command

Cron cannot go below this. For sub-minute work, loop inside a single long-running script, or use a systemd timer with OnUnitActiveSec and a lowered AccuracySec, since the timer default rounds to one minute. A job on a one-minute schedule also has the least room to overrun, so pair it with the flock pattern below.

Test a Cron Job Every 5 Minutes

Before scheduling an important command, create a small test job that writes the current date and time to a temporary log file.

Open your user crontab:

Terminal
crontab -e

Add the following entry:

txt
*/5 * * * * /usr/bin/date >> /tmp/cron-every-5-minutes.log 2>&1

Save the file, then confirm that the entry was installed:

Terminal
crontab -l

After the next five-minute boundary, check the log:

Terminal
tail /tmp/cron-every-5-minutes.log

Each successful run adds a timestamp. Cron schedules use clock boundaries, so a job saved at 10:03 runs next at 10:05, not at 10:08.

Restrict the Schedule to Certain Hours

You can combine a minute step with hour and weekday ranges. The following entry runs every five minutes from 9:00 through 17:55, Monday through Friday:

txt
*/5 9-17 * * 1-5 command

To stop after 17:00 instead, use separate entries or adjust the command logic because 9-17 includes the entire 17th hour.

Prevent Overlapping Cron Jobs

If a job takes longer than its interval, the next run can start before the previous one finishes. Use flock to allow only one instance:

txt
*/5 * * * * /usr/bin/flock -n /tmp/check-disk.lock /home/user/scripts/check-disk.sh

The -n option exits immediately when another process holds the lock. Choose a unique lock file for each job.

Troubleshooting

Cron job does not run
Confirm that the entry was saved with crontab -l, then check the service with systemctl status cron on Debian and Ubuntu or systemctl status crond on Fedora and RHEL.

Command works in the shell but fails in cron
Cron runs with a minimal environment and uses /bin/sh by default. Use absolute command and file paths, or define the required PATH and SHELL variables in the crontab.

No sign the job ever started
Cron logs every job it launches, which separates a scheduling problem from a failing command. On Debian and Ubuntu, run journalctl -u cron --since today. On Fedora, RHEL, and derivatives, run journalctl -u crond --since today. If the command appears in the log, cron did its part and the failure is inside the command.

No output appears
Cron may send output by email when a mail service is installed. During testing, redirect both standard output and errors to a log file: */5 * * * * /path/to/command >> /tmp/job.log 2>&1.

Job runs at the wrong time
Cron uses the system timezone, which you can check with timedatectl. Cronie supports CRON_TZ=Region/City at the top of a crontab to schedule that table in another timezone. Debian cron does not support this. Setting TZ there changes the command environment, not when the job runs.

Jobs overlap or consume too many resources
Use flock -n to prevent a new instance from starting while the previous run still holds the lock.

FAQ

How do I run a cron job every minute?
Use * * * * * command. The asterisk in the minute field matches every minute, so the job runs once per minute.

What is the difference between a step expression and an explicit minute list?
They produce the same minute schedule. The */5 step expression is shorter and easier to read.

Does the five-minute expression wait for the previous job to finish?
No. Cron runs at fixed clock times: minutes 0,5,10,15 and so on. It does not wait five minutes after the previous job finishes.

How do I run cron every 30 minutes?
Use */30 * * * * command. It runs at minute 0 and minute 30 of every hour.

Conclusion

The */N step expression is the simplest way to run cron jobs at regular minute intervals. Test new entries with a temporary log, use absolute paths, and add flock when a job may run longer than its schedule.

Tags

Linuxize Weekly Newsletter

A quick weekly roundup of new tutorials, news, and tips.

About the authors

Dejan Panovski

Dejan Panovski

Dejan Panovski is the founder of Linuxize, an RHCSA-certified Linux system administrator and DevOps engineer based in Skopje, Macedonia. Author of 1000+ Linux tutorials with 20+ years of experience turning complex Linux tasks into clear, reliable guides.

View author page