Cron Expression Generator
Build and check cron schedules in plain English. Type an expression or edit each field, and instantly see what it means, when it will run next, and the exact line to paste into your crontab.
Plain-English explanationNext 5 run timesReady-to-paste crontab lineFree, no sign-up
The basics
Cron expression syntax
A standard cron expression has five fields separated by spaces, followed by the command to run. Each field says when the job is allowed to run. The job runs whenever all of them match the current time.
┌───────────── minute (0–59)
│ ┌─────────── hour (0–23)
│ │ ┌───────── day of month (1–31)
│ │ │ ┌─────── month (1–12 or JAN–DEC)
│ │ │ │ ┌───── day of week (0–6 or SUN–SAT, 7 is also Sunday)
│ │ │ │ │
* * * * * /path/to/command
* (any value)
* in the hour field means every hour.
, (list)
1,15 in day of month means the 1st and the 15th.
– (range)
1-5 in day of week means Monday through Friday.
/ (step)
*/15 in minutes means every 15 minutes: 0, 15, 30 and 45.
Cheat sheet
Common cron schedule examples
| Expression | Runs |
|---|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
*/15 * * * * | Every 15 minutes |
0 * * * * | Every hour, on the hour |
0 */6 * * * | Every 6 hours (00:00, 06:00, 12:00, 18:00) |
0 0 * * * | Every day at midnight |
30 2 * * * | Every day at 02:30, a popular time for backups |
0 9 * * 1-5 | At 09:00 on weekdays |
*/10 9-17 * * 1-5 | Every 10 minutes during working hours on weekdays |
0 0 * * 0 | Every Sunday at midnight |
0 0 1 * * | At midnight on the 1st of every month |
0 0 1 1 * | Once a year, at midnight on January 1 |
Most cron versions also accept shortcuts: @hourly, @daily, @weekly, @monthly, @yearly and @reboot, which runs once when the server starts. The generator above understands these too.
Command line
How to add a cron job with crontab
Edit your cron jobs
crontab -e
List your cron jobs
crontab -l
Edit another user’s cron jobs (as root)
sudo crontab -u www-data -e
Back up your crontab first
crontab -l > ~/crontab-backup.txt
Running crontab -e opens your crontab in a text editor. Add one job per line, save and close, and cron picks up the change automatically. Be careful with crontab -r: it deletes all of your cron jobs without asking. First time connecting to your server? See how to SSH into a server.
Troubleshooting
Why isn’t my cron job running?
- Use full paths. Cron runs with a minimal PATH, so write
/usr/bin/phpinstead ofphp, and give the full path to your script. - Make the script executable. Run
chmod +x script.sh, and start it with a line like#!/bin/bash. - Check the time zone. Cron uses the server’s time zone. Run
timedatectlordateto check it. - Escape percent signs. In a crontab line,
%means a new line, so write\%, for example indate +\%F. - End with a new line. Some cron versions ignore the last line of a crontab if it has no line break after it.
Log your cron job’s output
By default, cron emails output to the user or throws it away. Send it to a log file instead so you can see what happened:
30 2 * * * /home/deploy/backup.sh >> /var/log/backup.log 2>&1
>> appends normal output to the log, and 2>&1 sends errors to the same file. To check whether cron itself ran the job, look in /var/log/syslog on Debian and Ubuntu or run journalctl -u cron.
FAQ
Cron questions, answered
What does */5 mean in cron?
The slash sets a step. */5 in the minute field means every 5 minutes, starting from 0: 0, 5, 10 and so on up to 55. You can combine steps with ranges too, so 0-30/10 means minutes 0, 10, 20 and 30.
How do I run a cron job every 30 seconds?
Standard cron cannot go below one minute. A common workaround is two entries for the same minute, one of them starting with sleep 30 before the command. For frequent tasks, a systemd timer or a long-running service is usually a better fit.
What time zone does cron use?
Cron uses the server’s system time zone. The next run times in this generator are shown in your own local time, so if your server is in a different time zone, adjust the hour field to match.
What happens if I set both day of month and day of week?
Cron runs the job when either one matches, not only when both do. For example, 0 0 13 * 5 runs at midnight on the 13th of every month and also every Friday. The generator above follows the same rule.
Is 0 or 7 Sunday in cron?
Both. Day of week 0 and 7 each mean Sunday, 1 is Monday and 6 is Saturday. You can also use three-letter names like SUN, MON and FRI.
Where are cron jobs stored?
Each user’s crontab is stored by the system, usually in /var/spool/cron/crontabs on Debian and Ubuntu or /var/spool/cron on Red Hat-based systems. Edit it with crontab -e rather than opening the file directly. System-wide jobs live in /etc/crontab and /etc/cron.d.
Script won’t run? Check its permissions
Cron can only run scripts that are executable. Work out the right chmod value in seconds.