Cron is one of the most powerful tool in a Linux/Unix based operating systems. A cron job is a Linux utility used for scheduling a task to be executed in the specific time according to its schedule at designated time.

Most commonly these are used for automating system administration and maintenance activities like to send out a notice every day about the successful completion of scheduled backups or cleaning /tmp/ directory . There are many other situations when a web application needs certain tasks to run periodically.

So, in this article we will guide you about its working mechanism and to show that how easily you can schedule your tasks with Cron jobs. “Cron” itself is a daemon that runs in the background while the schedule of different jobs resides in its configuration file called “crontab” where all the tasks and times are scheduled.

Starting Cron Service

Almost all Linux distributions comes with pre installed cron by default. In case if its not installed on your machine, you can install it using following command.

root@ubuntu-14:~# apt-get install cron

Now check the status of cron service, it should be running in the background by default, you can start it with start command if its in stopped state.

root@ubuntu-14:~# service cron start
root@ubuntu-14:~# service cron status 
cron start/running, process 1027

Using Cron Help

Once your cron service is fine you can proceed forward and start using it. For more help about its usage you can check its man pages by executing below commands.

root@ubuntu-14:~# man crontab
How to use cron jobs for automation on Ubuntu 14.04

The above command will shows the general manuals about crontab help. In order to get more specific information about how to use cron jobs you can also check by using below command.

root@ubuntu-14:~# man 5 crontab

To exit from the manual simply press q or h about more help to use manuals.

How to use cron jobs for automation on Ubuntu 14.04

Crontab Commands Usage

Here we show you some the most important commands that are used for scheduling automated tasks with crontab command.

List Cron Jobs

Use the following command to list the scheduled cron jobs for the currently logged in user.

root@ubuntu-14:~# crontab –l

In the output command will show you all the list of cron jobs running under this user. If you want to display the cron jobs of another user then we can check that by using following command.

root@ubuntu-14:~# crontab –l –u username

This will list the cron jobs of your mentioned username.

Edit Cron Jobs

To add the new cron job or editing the existing one we will use the following crontab command.

root@ubuntu-14:~# crontab -e

Remove Cron Jobs

Following command can be used to remove the scheduled cron jobs.

root@ubuntu-14:~# crontab –r

This will remove all the cronjobs without asking for confirmation. Use -ir if you want to remove cronjobs interactively.

root@ubuntu-14:~# crontab -ir

Scheduling tasks with Crontab

Now we start using cron jobs by using its configuration file that is crontab while there are different ways to use cron. If you list /etc directory you will find some directories like cron.daily, cron.hourly, cron.monthly etc. So, if you place your cron script into one of the those directory it will will as per the schedule depending on the name of the directory.

Types of Cron Configuration

There are two types of configuration files that are used for scheduling automated tasks.

System crontab

These cron jobs are used by system services and critical jobs that requires root level privileges. We can check system-wide crontab in /etc/crontab file.

How to use cron jobs for automation on Ubuntu 14.04

User crontabs

User level cron jobs are separate for each user, so each user can create their own cron jobs using crontab command.
We can check or edit user level cron jobs by using below command.

root@ubuntu-14:~# crontab –e
How to use cron jobs for automation on Ubuntu 14.04

After choosing the editor you will be able to configure your new cron jobs here.

Scheduling Jobs with Crontab

We can schedule cron jobs by using its special syntax. There are also different short hand commands that can be used in crontab file to make administering it with ease.

The syntax of crontab entry should be as follow:

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

New Cron Job Configuration Example

Now you are familiar with the crontab commands, syntax and the types of cron jobs, now we create few test cron jobs and let’s see how it works. You can schedule any of your daily task by adding it with crontab –e command.

Scheduling job to run every minute

In this example we will create a cronjob that will execute the the text “test cron job to execute every minute” every minute and send an email to user@vexxhost.com.

Your first is to edit the crontab with below command:

root@ubuntu-14:~# crontab –e

Put the following cronjob script in it and save changes.

SHELL=/bin/bash
HOME=/
MAILTO=”user@vexxhost.com”
#This is a comment
* * * * * echo 'test cron job to execute every minute'
:wq!
How to use cron jobs for automation on Ubuntu 14.04

Once you save the file you will get the output like crontab: installing new crontab . So its mean that you have successfully added a new cron job.

Scheduling Cron job at specific time

Now let’s see the scenario that if you want to schedule a cron job to run at specific time like at “7:00 PM” on every Thursday. Then the crontab script would like below.

00 15 * * 4 sh /root/test.sh

Let’s add the above line in crontab using flooowing command.

root@ubuntu-14:~# crontab -e
crontab: installing new crontab

In the above script “00 15” refers to 3:00 PM while “4” refers to the day “Thursday”.

Conclusion

At the end of this article you learnt that how easily you can automate your tasks by using crontabs instead of doing that manually with repetitions. You learned about its basic commands and the syntax that will helps you a lot while creating your own cronjobs.