The 'Cron' Command
The cron command starts a process that executes commands
at specified dates and times. Regularly scheduled commands can be
specified according to instructions found in the crontab
files in the directory /var/spool/cron/crontabs. Users can submit
their own crontab files via the crontab command.
The 'Crontab' Command
Crontab copies the specified file or standard input if no file is
specified, into a directory that holds all users' crontabs.
SYNOPSIS:
The -e option edits a copy of the current users'
crontab file or creates an empty file to edit if crontab does not
exist.
The-r option removes a user's crontab from the crontab
directory.
The -l options lists the crontab file for the invoking
user.
Setting up a Crontab job
A crontab file consists of lines of six fields
each.The fields are separated by spaces or tabs. The first five
are integers that specify the following:
Each of these patterns may be either an asterisk (meaning
all valid values) or a list of elements separated by commas.
An element is either a number or two numbers separated by a minus
sign ( meaning an inclusive range). Notice the time is in 24 hour
format, 0 is midnight and 13 is one in the
afternoon.
The sixth field of a line in a crontab file
is a string to be executed by the shell at the specified times by
the first fife fields. A percent character in this field (unless
escaped by \) is translated
to a newline character. Only the first line (up to a % or end of line) of the command
field is executed by the shell. The other lines are made
available to the command as standard input.
Any line beginning with a # is a
comment and is ignored.
Example
To illustrate, 0 0 1,15 1 would run a command on the first and
fifteenth of each month, as well as on every Monday at exactly
midnight. To specify days by only one field, the other field
should be set to *. The entry, 0 23 * * 1 would run a command
only on Mondays at eleven PM.
A minute specification of 0,30 would indicate the job is to be
run on the hour and half hour. Likewise, a day of the month entry
of 1,15 would initiate execution on the first and fifteenth of
the month.
Make sure you include an explicit path to your programs or
scripts that you want to run by crontab. Let's assume we want to
execute a Perl program, autoclose.cgi, every day at
midnight. Additionally assume the full path to the script is /home/www/yourdirectory/cgi-bin.
The full crontab command would be: 0
0 * * * /home/www/yourdirectory/cgi-bin/autoclose.cgi
Execute at midnight, every day of the month, every month of
the year, and every day of the week.
If you're not sure of the full path to your script, go to the
directory and issue the command:
pwd
This is the "print working directory" command.
The requirement for explicit paths also apply to any
"require" library file used in a Perl script.
The line:
0 0 1,15 * 1
/home/www/yourdirectory/cgi-bin/autoclose.cgi
runs the command on the first and fifteeth of each month, as well
as on every Monday.
The line:
0 0 * * 1
/home/www/yourdirectory/cgi-bin/autoclose.cgi
runs a the command only on Mondays.
Putting it all together
Creating your first crontab job is a three-part process:
When preparing program to run or creating scripts to run remember
that crontab jobs are background tasks. There is no terminal
attached to a crontab job so there should be no print statements
that normally write to the screen. (It is possible to redirect
such print statements.) The same consideration hold true for
requesting user input.
Let's assume that we want to run this script:
/home/www/yourdirectory/cgi-bin/autoclose.cgi
Next create a file to hold your crontab instructions. Let's call
it "cron.txt". Let's also have our script
execute at zero minute every hour. Put the following
crontab command line in the text file "cron.txt"
and save this file as a text file: 0 * * *
* /home/www/yourdirectory/cgi-bin/autoclose.cgi
The last step is uploading the contents of your "cron.txt"
file to the system crontab spool area. Enter the following
at the system prompt.
crontab cron.txt
Now you are done with this project.
If you would like additional detailed information on crontab,
enter the following at your Unix prompt.
man crontab