How to schedule a job
To schedule a job using
cron
in Linux, you use the crontab
command as follows.$ crontab -e
When you run the above command, it will open an empty file in your default text editor. Usually it is
vi
. If you are not comfortable using vi
, you can change the default editor by setting the EDITOR
Bash variable.For example, to make
crontab
open the file in nano
text editor, you can do the following.$ EDITOR=/bin/nano; export EDITOR
Next time you run the
crontab -e
command, it will open the file for editing in nano
.To list all the jobs you have scheduled, you use the
-l
option as follows.$ crontab -l
And to delete all the jobs you have scheduled, you use the
-r
option.$ crontab -r
Cron table files (crontabs) are stored in the /var/spool/cron
directory. Each user can have their own crontab
file.
Cron syntax
The basic syntax used in a
crontab
file is as follows.* * * * * [user-name] command
As you can see above, the syntax for cron job scheduling involves 7 fields. However, the 6th field user-name is optional which is why it is displayed in
[ ]
. The rest of the fields are mandatory. The last field contain the command to be executed which can be the full path of a script or any command in Linux.The first five fields in the cron job scheduler syntax is explained below.
.---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * user-name `command to be executed`
Use of special strings in crontab
In the crontab syntax listed above, the first five fields are used to denote the date and time. However, you can use the following collection of special string variables to replace the first five fields.
@reboot
- Run once, at startup.@yearly
, @annually
- Run once a year.@monthly
- Run once a month.@weekly
- Run once a week.@daily
,@midnight
- Run once a day.@hourly
- Run once an hour.Files used by crontab
The following is a list of configuration files accessed by
cron
command. These files are used by the system for various job scheduling purposes.All the configuration files listed below reside in the /etc
directory or one of its sub-directories.
cron.allow
& cron.deny
- These files are used to allow or deny on a per user basis who gets to use cron to schedule jobs.This is what the man page of crontab tells us -
If the cron.allow file exists, a user must be listed in it to be allowed to use cron. If the cron.allow file does not exist but the cron.deny file does exist, then a user must not be listed in the cron.deny file in order to use cron. If neither of these files exists, only the super user is allowed to use cron.
/etc/crontab
- This is the master crontab file./etc/cron.d/
- This directory contains additional system crontab files./etc/cron.hourly/
- This directory contain scripts that cron should run every hour./etc/cron.daily/
- This directory contain scripts that cron should run daily./etc/cron.weekly/
- This directory contain scripts that cron should run once every week./etc/cron.monthly/
- This directory contain scripts that cron should run once every month.As an example,
/etc/cron.daily/tmpwatch
is a script that is used to clean old files out of specified directories. Useful for keeping the /tmp
directory from filling up. Because it resides in the /etc/cron.daily/
directory, it is executed once daily by the system crontab file.Further Reading
Cron and Crontab usage and examples @pantz.org
Visual crontab creation tool @corntab.com
0 comments:
Post a Comment