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
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.
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.
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
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!
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.