How to use crontab
What crontab is
Allows a user to schedule scripts or programs to be executed at specific times or intervals.
Syntax
crontab [-e] [-l] [-r] [filename]
-e edit a copy of the current user's crontab file, or creates an empty file to edit if crontab does not exist. When editing is complete, the file is installed as the user's crontab file. If a user- name is given, the specified user's crontab file is edited, rather than the current user's crontab file; this may only be done by a super-user. The environment variable EDITOR determines which editor is invoked with the -e option. The default editor is ed. Note that all crontab jobs should be submitted using crontab ; you should not add jobs by just editing the crontab file because cron will not be aware of changes made this way.
-l list the crontab file for the invoking user. Only a super-user can specify a username following the -r or -l options to remove or list the crontab file of the specified user.
-r remove a user's crontab from the crontab
filename The filename that contains the commands to run.
Lines that can be in the crontab file.
minute (0-59),
hour (0-23),
day of the month (1-31),
month of the year (1-12),
day of the week (0-6 with 0=Sunday).
Usage
crontab -e # edits the crontab file to be used.
A preferred editor can be defined in your shell configuration file (like .bashrc) by adding the line:
export EDITOR=nano
Below is what a standard job might look like.
0 12 14 2 * mailx john%Happy Birthday!%Time for lunch.
Below is a table that represents what each of the above fields are for.
min hour dayofmonth monthofyear dayofweek command 0 12 14 2 * mailx john%Happy Birthday!%Time for lunch.
Options Explanation
* Is treated as a wild card. Meaning any possible value. */5 Is treated as ever 5 minutes, hours, days, or months. Replacing the 5 with another numerical value will change this option. 2,4,6 Treated as an OR, so if placed in the hours, this could mean at 2, 4, or 6 o-clock. 9-17 Treats for any value between 9 and 17. So if placed in day of month this would be days 9 through 17. Or if put in hours it would be between 9 and 5.
If you wish to create a task to be performed once later during the day you may wish to consider using the at command.
Examples
Run the command date at 6:10 am every day:
10 6 * * * date
Run date every two hours at the top of the hour:
0 */2 * * * date
Run date every two hours between 11 pm and 7 am, and again at 8 am:
0 23-7/2,8 * * * date
Run date at 4:00 am on January 1st:
0 4 1 jan * date
Run date every day at 11 am, appending all output to a file:
0 11 * * * date >> /var/log/date-output 2>&1
To request the last Monday, etc. in a month, ask for the “5th” one. This will always match the last Monday, etc., even if there are only four Mondays in the month:
Run date at 11 am on the first and last Mon, Tue, Wed of each month:
0 11 1,5 * mon-wed date