What is a cronjob and how do I use it?
Posted on 24 October 2003 05:56 PM
The cron daemon is a long running process that executes commands at specific dates and times. To schedule one-time only tasks with cron, use at or batch. For commands that need to be executed repeatedly (e.g. hourly, daily or weekly), use crontab, which has the following options:
The crontab command creates a crontab file containing commands and how often cron should execute them. Each entry in a crontab file consists of six fields, specified in the following order:
The fields are separated by spaces or tabs. The first five are integer patterns and the sixth is the command to be executed. The following table briefly describes each of the fields:
Each of the patterns from the first five fields may either be an asterisk (*) (meaning all legal 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). Note that the specification of days may be made by two fields (day of the month and day of the week). If both are specified as a list of elements, both are followed. For example:
0 0 1,15 * 1 /big/dom/xdomain/cgi-bin/scriptname.cgi
The cron daemon would run the program scriptname.cgi in the cgi-bin directory on the first and fifteenth of each month, as well as on every Monday. To specify days by only one field, the other field should be set to *. For example:
0 0 * * 1 /big/dom/xdomain/cgi-bin/scriptname.cgi
The program would then only run on Mondays.
If a cron job specified in your crontab entry produces any error messages when it runs, they will be reported to you via email.
You may create crontab files in notepad (being sure to upload them in ASCII) or you may create them from the command line (via SSH) by simply typing:
For more information, consult the man pages. man pages are the directions and tutorials available to you right at the command line. Type any of the following lines to open the relevant tutorials ([Enter] means to hit the Enter (return) key):
man 1 crontab [Enter]
man cron [Enter]
man at [Enter]
man batch [Enter]
man 1 cron [Enter]
Note:Your crontab file must end with a line feed - in other words, make sure to press [Enter] after the last line in the file.
Try It!Now that you have read an overview of cron, test your skills by following the steps below. Once completed, you should have a cron file of your own!
Step 1: Create a simple text file using Notepad or any simple text editor that contains the following text:
58 23 * * * /big/dom/xdomain/cgi-bin/yourscript.pl
Notes for Step 1
The cronfile name may be replaced with any name you choose. For instance, if you are running a cron to trigger an email reminder script, it could be called reminder.txt. Many choose to simply call it cronfile.txt.
Step 3: Upload the file in ASCII.
The above tells the server's crontab where the file is located and that you wish to make it active. Make sure the path to the file is the actual path to where the file was placed. If successful, you will be returned to the command bash line. If not, an error will be displayed.
Removing/Stopping the Cron: Deleting the cronfile.txt file from your account will not stop the cron. You may remove this file at any time, however since the server's crontab already has the contents, the cron will still run once it has been made active.To turn the cron off, you must connect to your account via SSH and issue the following command:
The crontab -r will deactivate the cronjob and remove the file contents from the server.
Security Note: If the script the cron is set up to run is in the /cgi-bin/ or /www/ directory, it may be run at any time by anyone with browser access. If the crontab is all that should run the script and you do not want the public to be able to run the script, then you will need to place the script in a directory above the /cgi-bin/ and /www/ directories such as: /big/dom/xdom/user/cronscripts/scriptname