Command
The crontab command is used to schedule jobs to be run in the future, usually on some regular schedule (such as every week). The command is run with one of three command line arguments:

crontab -l View crontab file, if any
crontab -r Remove crontab file, if any
crontab -e Edit (or create) user's crontab file (starts the editor automatically)

You may not be able to edit your (the users) crontab because the server has a cron.allow file on it. On a Redhat system the cron.allow is located in /etc.
To edit it as root type:
pico /etc/cron.allow
and add your name on a new line than save.

crontab File Syntax
The file allows blank lines and comment lines (lines that begin with "#"). Other lines describe jobs to run and when to run them. You have one line for each job you which to run. The first five fields on a line say when to run the job, and the rest of the line is some command to run.

While the command may contain spaces, the first five fields must not contain any white space. Space is used to separate the fields. (In some modern versions of crontab an optional sixth field may be present, and other lines may appear in the file. These are described in the crontab file man page (man 5 crontab).

Each minute the cron daemon wakes up and compares the crontab file entries against the current time. If all five fields match the current minute then the command is executed. The command runs with the user's permissions. It is important to note that the command will run with a simplified /bin/sh environment (your login scripts are not run), and further no interactive commands can be used since the command does not run with its input or output connected to any screen or keyboard. Also note just because a script runs fine from the command line does not mean cron can run it. A good rule is to always use full paths in a script that cron will run.

Should you forget to redirect standard output or standard error of your command, crontab will send any output to the user as email.

Field Descriptions
minute hour dayOfMonth month dayOfWeek command

where:
minute values range from 0 to 59,
hour values range from 0 to 23,
dayOfMonth values range from 1 to 31,
month values range from 1 to 12,
dayOfWeek values range from 0 to 6, with 0 meaning Sunday


Field Values
NUM A single value
NUM-NUM A range of values
NUM,NUM-NUM,... A comma separated list of values or ranges (remember no spaces after commas!)
* wildcard, meaning match all possible values
(Note: Don't use a wildcard for the minute field, and rarely for the hour!)

Examples
# run cmd on the half-hour from 8:00 AM to 5:30 PM, Monday thru Friday:
0,30 8-17 * * 1-5 cmd

# run cmd at noon each Friday the 13th:
0 12 13 * 5 cmd

# run cmd at 3:17 AM Monday (a backup program perhaps):
17 3 * * 1 cmd

# This command sends a "popup" message to $USER's screen,
# at 3:00 PM Fridays, if $USER is logged in:
0 15 * * 5 echo "Time for staff meeting" | write $USER >/dev/null 2>&1


MORE EXAMPLES

0 * * * * echo Cuckoo Cuckoo 2>&1 /dev/console
Every hour (when minutes=0) display Cuckoo Cuckoo on the system console.

30 9-17 * 1 sun,wed,sat echo `date` >> /date.file 2>&1
At half past the hour, between 9 and 5, for every day of January which is a Sunday, Wednesday or Saturday, append the date to the file date.file

0 */2 * * * date >> /dev/null 2>&1
Every two hours at the top of the hour run the date command. The >> /dev/null 2>&1 part means to send any standard output to /dev/null (the linux trash can) and to redirect standard error (2) to the same place as the standard output (1). Basically it runs the command without any output to a terminal etc.

0 23-7/2,8 * * * date
Every two hours from 11p.m. to 7a.m., and at 8a.m.

0 11 4 * mon-wed date
At 11:00 a.m. on the 4th and on every mon, tue, wed

0 4 1 jan * date
4:00 a.m. on january 1st

0 4 1 jan * date >>/var/log/messages 2>&1
Once an hour, all output appended to log file