Automating tasks with crontab

Posted by ardchoille on Nov 19, 2008 10:45 PM EDT
Ian's Notebook; By Ian MacGregor
Mail this story
Print this story

Let cron handle your repetitive tasks - an introduction to crontab. A crontab is a simple text file that holds a list of commands that are to be run at specified times. These commands, and their related run times, are controlled by the cron daemon and are executed in the system's background. More information can be found by viewing the crontab man page. We will run through a simple crontab example later.

A crontab is a simple text file that holds a list of commands that are to be run at specified times. These commands, and their related run times, are controlled by the cron daemon and are executed in the system's background. More information can be found by viewing the crontab man page. We will run through a simple crontab example later.

How Does It Work?

The system maintains a crontab for each user account. In order to edit or create a crontab, you must use a text editor that is available on your system. The crontab must be opened with the command crontab using the -e option. To create a crontab open a terminal and type:

crontab -e

The text editor will open with a blank window for the desired times and commands to be entered. Each line represents a separate crontab entry - also known as a "cron job".

It is worth mentioning here that some folks prefer a text editor other than the one which ships with their system. If you're using a bash shell, switching text editors is quite easy. Open your ~/.bashrc file in a text editor and add or change the following:
export EDITOR=vim

This will set the default editor to vim, so set it to your preferred editor.

Crontab Sections

Each of the sections are separated by a space, with the final section containing one or more spaces. No spaces are allowed within Sections 1-5, only between them. Sections 1-5 are used to indicate when and how often you want the task to be executed. This is how a cron job is layed out:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command
01 04 1 1 1 /usr/bin/somedirectory/somecommand

The above example will run /usr/bin/somedirectory/somecommand at 4:01am on any Monday which falls on January 1st. An asterisk (*) can be used so that every instance (every hour, every weekday, every month, etc.) of a time period is used.
01 04 * * * /usr/bin/somedirectory/somecommand

The above example will run /usr/bin/somedirectory/somecommand at 4:01am every day of every month.

Comma-seperated values can be used to run more than one instance of a particular command within a time period. Dash-seperated values can be used to run a command continuously.
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

The above example will run /usr/bin/somedirectory/somecommand at 01 and 31 past the hours of 4:00am and 5:00am on the 1st through the 15th of every January and June.

The "/usr/bin/somedirectory/somecommand" text in the above examples indicates the path of the command which will be run at the specified times. It is recommended that you use the full path to the desired commands as shown in the above examples. The crontab will begin running as soon as it is properly edited and saved.

Crontab Options

The -l option causes the current crontab to be displayed on standard output.
The -r option causes the current crontab to be removed.
The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.

After you exit from the editor, the modified crontab will be checked for accuracy and, if there are no errors, installed automatically.

Crontab Example

Below is an example of how to setup a crontab to run updatedb, which updates the slocate database: Open a term and type crontab -e and press enter, type the following line, substituting the full path for the one shown below, into the editor:
45 04 * * * /usr/bin/updatedb

Save your changes and exit the editor, crontab will let you know if you made any mistakes. The crontab will be installed and begin running if there are no errors. That's it. You now have a cron job setup to run updatedb, which updates the slocate database, every morning at 4:45.

The double-ampersand (&&) can also be used in the "command" section to run multiple commands consecutively.


45 04 * * * /usr/sbin/chkrootkit && /usr/bin/updatedb

The above example will run chkrootkit and updatedb at 4:45am daily - providing you have these apps installed.

Full Story

  Nav
» Read more about: Story Type: Tutorial

« Return to the newswire homepage

This topic does not have any threads posted yet!

You cannot post until you login.