CronDrive

Cron every day at 2 AM

0 2 * * *

Change the time zone to see when it runs on your server.

It's 08:06 there now (UTC+00:00).

Which time zone do I choose?

The time zone of the server where the crontab runs, which may not be yours. To see it, run this on the server:

timedatectl | grep "Time zone"

If the crontab sets CRON_TZ, choose that one.

Every day at 02:00

0 minute
2 hour
* day
* month
* weekday

Next runs (UTC)

  1. Sat 24 Oct, 02:00
  2. Sun 25 Oct, 02:00
  3. Mon 26 Oct, 02:00
  4. Tue 27 Oct, 02:00
  5. Wed 28 Oct, 02:00
  6. Thu 29 Oct, 02:00
  7. Fri 30 Oct, 02:00
  8. Sat 31 Oct, 02:00
  9. Sun 1 Nov, 02:00
  10. Mon 2 Nov, 02:00

Know when it doesn't run

CronDrive emails you, or posts to Slack, when a job with this schedule fails, or doesn't start or finish on time. Free for up to 15 jobs.

What you'd see with this schedule

An example with the last runs of this schedule and made-up results: one failed and one didn't run.

Times in UTC.

Due
Thu 22 Oct, 02:00 On time Started 02:00, finished 02:13, took 13 min.
Wed 21 Oct, 02:00 Didn't run Alerts sent at 02:05 and 02:30.
Tue 20 Oct, 02:00 On time Started 02:00, finished 02:14, took 14 min.
Mon 19 Oct, 02:00 Failed with code 1 Alert sent at 02:04. Started 02:00, finished 02:04, took 4 min.
Sun 18 Oct, 02:00 On time Started 02:00, finished 02:13, took 13 min.
Sat 17 Oct, 02:00 On time Started 02:00, finished 02:14, took 14 min.

The alert of the failed run

Email from CronDrive, Mon 19 Oct, 02:04

Failed (exit code 1): "Your job"

The job "Your job" failed with exit code 1.

If you connect Slack, the same message goes to your channel.

The change in your crontab

0 2 * * * curl -fsS -m 10 https://job.crondrive.com/uG2Exw/start/$$; /path/to/job.sh; curl -fsS -m 10 https://job.crondrive.com/uG2Exw/end/$?/$$

Two calls around your command, in the same line. Your job's line comes with its own token.

Monitor this schedule

Format

Cron is driven by a crontab (cron table) file, a configuration file that specifies shell commands to run periodically on a given schedule. On Linux you can run crontab -e to edit it.

Each line has a cron expression made of five fields, followed by a shell command to execute. A * means every value; 1,5 is a list, 1-5 a range and */5 a step.

* minute 0-59
* hour 0-23
* day 1-31
* month 1-12
* weekday 0-6, Sunday is 0

Examples

Expression Description
* * * * * Every minute
*/2 * * * * Every 2 minutes
*/3 * * * * Every 3 minutes
*/5 * * * * Every 5 minutes
*/10 * * * * Every 10 minutes
*/15 * * * * Every 15 minutes
*/20 * * * * Every 20 minutes
*/30 * * * * Every 30 minutes
0 * * * * Every hour
0 * * * 1-5 Every hour on Monday through Friday
0 */2 * * * Every 2 hours
0 */3 * * * Every 3 hours
0 */4 * * * Every 4 hours
0 */6 * * * Every 6 hours
0 */8 * * * Every 8 hours
0 */12 * * * Every 12 hours
0 0 * * * Every day at 00:00
0 2 * * * Every day at 02:00
0 8 * * 1-5 At 08:00 on Monday through Friday
0 0 * * 1 At 00:00 on Monday
0 0 * * 0 At 00:00 on Sunday
0 0 */5 * * At 00:00 every 5 days
0 0 1 * * At 00:00 on day 1 of the month
1,5 * * * * At minutes 1 and 5 of every hour
1-5 * * * * At minutes 1 through 5 of every hour
0 1 * * 1,2 At 01:00 on Monday and Tuesday
30 9-17 * * 1-5 Every hour from 09:30 to 17:30 on Monday through Friday