Cron is a daemon used for scheduling tasks to be executed at a certain time. Cron is driven by a crontab, a configuration file that specifies shell commands to run periodically on a given schedule.
Each user has a crontab file, allowing them to specify actions and times that they should be executed. There is also a system crontab, allowing tasks such as log rotation and locate database updating to be done regularly.
To use cron, simply add entries to your crontab file. A crontab is a simple text file that holds a list of commands that are to be run at specified times. These commands, and their related run times, are controlled by the cron daemon and are executed in the system’s background. The crontab files are stored where the lists of jobs and other instructions to the cron daemon are kept. Users can have their own individual crontab files and often there is a systemwide crontab file (usually in /etc/crontab or a subdirectory of /etc) which only system administrators can edit.
Each of the sections is separated by a space, with the final section having one or more spaces in it. No spaces are allowed within Sections 1-5, only between them. Sections 1-5 are used to indicate when and how often you want the task to be executed.
minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command
.---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue... | | | | | * * * * * command to be executed
The next xample will run /usr/bin/somedirectory/somecommand at 4:01am on January 1st plus every Monday in January. An asterisk (*) can be used so that every instance (every hour, every weekday, every month, etc.) of a time period is used.
01 04 1 1 1 /usr/bin/somedirectory/somecommand
Also, the next example will run /usr/bin/somedirectory/somecommand at 4:01am on every day of every month.
01 04 * * * /usr/bin/somedirectory/somecommand
Comma-separated values can be used to run more than one instance of a particular command within a time period. Dash-seperated values can be used to run a command continuously.
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
The above example will run /usr/bin/somedirectory/somecommand at 01 and 31 past the hours of 4:00am and 5:00am on the 1st through the 15th of every January and June.
You may want to run a script some number of times per time unit. For example if you want to run it every 10 minutes use the following crontab entry (runs on minutes divisible by 10: 0, 10, 20, 30, etc.)
*/10 * * * * /usr/bin/somedirectory/somecommand
which is also equivalent to the more cumbersome
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
There are several special predefined values which can be used to substitute the CRON expression.
@reboot - Run once, at startup. @yearly - Run once a year, "0 0 1 1 *". @annually - (same as @yearly) @monthly - Run once a month, "0 0 1 * *". @weekly - Run once a week, "0 0 * * 0". @daily - Run once a day, "0 0 * * *". @midnight - (same as @daily) @hourly - Run once an hour, "0 * * * *".