How to create a Cron Job

Reference Server


In this tutorial we will learn to create Cron Jobs on UNIX-based system (example Linux OS).

What is Cron?

Its a time based job scheduler in Unix like Operating System used to schedule repetitive tasks. People involved in the set up and maintenance of computer application use cron to schedule jobs to run periodically at times, dates or intervals.

How cron job works?

We first create a schedule for the job we want to be executed periodically. Then we feed this schedule to program called crontab (cron table). The crontab takes our schedule and save it into a table of configuration that it manages. When the appropriate time demanded by the schedule arrives the crontab feeds the job to the Cron which executes it.

Each line of a crontab file represents a job and consists of CRON expressions. We will see this in a moment.

Planning the schedule

The first thing we need to do when creating a cron job is to decide the schedule i.e., how often we want the job to be executed. We can schedule a job to execute daily, weekly, monthly etc as per requirement.

Format of the schedule

A crontab schedule consists of 6 fields on a single line and separated by space.

minute hour day month day-of-week command-to-execute

Minute takes the value 0 - 59
Hour takes the value 0 - 23
Day takes the value 1 - 31
Month takes the value 1 - 12
Day-of-week takes the value 0 - 7
Day of week Name
0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday

Some Example

If we want a cron job to execute at 10 am every day, we write:

0 10 * * * /command/to/execute

If we want a cron job to execute at 10 pm every day, we write:

0 22 * * * /command/to/execute

Note! 10 pm is 2200 in 24 hour format.

If we want a commend to execute at 9:30 am on 31st December, we write:

30 9 31 12 * /command/to/execute

To set a cron job that will execute every hour, we write:

0 * * * * /command/to/execute

To set a cron that will execute every 2 hours, we write:

* */2 * * * /command/to/execute

To set a cron job to execute every 3 hours, we write:

* */3 * * * /command/to/execute

If we want a cron to execute on 7th and 21st of every month, we write:

* * 7,21 * * /command/to/execute

How to specify the command to execute

If we want a program script samplecron.php to execute every day at 9am, we will write the following.

0 9 * * * /var/www/html/cron/samplecron.php

Remember to give the correct path of the script file that you want the cron to execute.

How to list all the Cron Jobs?

To list all the cron jobs use the following command in terminal.

# crontab -l

How to edit Cron Jobs?

To edit cron jobs use the following command in terminal.

# crontab -e


#Cronjob File
#DATE: 01-Feb-2016
#AUTHOR: Yusuf Shakeel
#CRONJOB: Update Event Status
#DESCRIPTION: This cronjob will execute every hour.
0 * * * * php /var/www/html/util/crons/event.php

Lines starting with # are treated as comments and ignored.