What is crontab and how to setup cron jobs?

Open a Terminal Window (Command Line) in Linux.

The following is a list of cron directories:

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

Copy your shell script ‘script.sh` or ‘script’ into one of the directories above.

If you need to run the script hourly, place your script file in the “cron.hourly” folder. For daily, place it inside the “cron.daily” and so forth.

Give the shell script the correct permission. For example, if script is called “script.sh”, set permission as follows:

cd /etc/cron.daily/
chmod 755 script.sh

Add new cron job to crontab:

crontab –e

This opens VI editor. Create the cron command using the following syntax:

1. The number of minutes after the hour (0 to 59)
2. The hour in military time (24 hour) format (0 to 23)
3. The day of the month (1 to 31)
4. The month (1 to 12)
5. The day of the week(0 or 7 is Sun, or use name)
6. The command to run

More graphically they would look like this:

* * * * * Command to be executed
| | | | |
| | | | +—– Day of week (0-7)
| | | +——- Month (1 – 12)
| | +——— Day of month (1 – 31)
| +———– Hour (0 – 23)
+————- Min (0 – 59)

An example command would be “0 0 * * * /etc/cron.daily/script.sh”. This would mean that the shell script will execute at midnight every night.

To save the changes to the crontab, hit ESC key, and then type :w followed by :q to exit.

For all the numbers you can use lists, e.g. 5,34,55 in the minutes field will mean run at 5 past, 34 past, and 55 past whatever hour is defined.

You can also use intervals. They are defined like this: */20. This example means every 20th, so in the minutes column it is equivalent to 0,20,40.

So to run a command every Monday at 5:30 in the afternoon:

30 17 * * 1 /path/to/command

or every 15 minutes

*/15 * * * * /path/to/command

Note that the day-of-week goes from 0-6 where 0 is Sunday.

To list existing cron jobs:

crontab –l

To remove an existing cron job:

crontab –e

Delete the line that contains your cron job, hit ESC > :w > :qIf you want to dig more on this topic here is a link to official Ubuntu Cron How To.