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