CRON Job Sheduling
CRON Job Sheduling
In Linux, tasks can be configured to run automatically within a specified period of time, on a specified date, or
when the system load average is below a specified number. Red Hat Enterprise Linux is pre-configured to run
important system tasks to keep the system updated. For example, the slocate database used by
the locatecommand is updated daily. A system administrator can use automated tasks to perform periodic
backups, monitor the system, run custom scripts, and more.
Red Hat Enterprise Linux comes with several automated tasks utilities: cron, at, and batch.
38.1. Cron
Cron is a daemon that can be used to schedule the execution of recurring jobs according to a combination of the
time, day of the month, month, day of the week, and week.
Cron assumes that the system is on continuously. If the system is not on when a job is scheduled, it is not
executed. To schedule one-time jobs, refer to Section 38.2, At and Batch.
To use the cron service, the vixie-cronRPM package must be installed and the crondservice must be running.
To determine if the package is installed, use the rpm -q vixie-croncommand. To determine if the service is
running, use the command /sbin/service crond status.
The first four lines are variables used to configure the environment in which the cron jobs are run.
The SHELLvariable tells the system which shell environment to use (in this example the bash shell), while
the PATHvariable defines the path used to execute commands. The output of the cron jobs are emailed to the
username defined with the MAILTOvariable. If the MAILTOvariable is defined as an empty string (MAILTO=""),
email is not sent. The HOMEvariable can be used to set the home directory to use when executing commands or
scripts.
Each line in the /etc/crontabfile represents a job and has the following format:
minute
hour
day
month
dayofweek
command
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-autotasks.html
1/3
8/24/13
For any of the above values, an asterisk (*) can be used to specify all valid values. For example, an asterisk for
the month value means execute the command every month within the constraints of the other values.
A hyphen (-) between integers specifies a range of integers. For example, 1-4means the integers 1, 2, 3, and 4.
A list of values separated by commas (,) specifies a list. For example, 3, 4, 6, 8indicates those four specific
integers.
The forward slash (/) can be used to specify step values. The value of an integer can be skipped within a range by
following the range with /<integer>. For example, 0-59/2can be used to define every other minute in the
minute field. Step values can also be used with an asterisk. For instance, the value */3can be used in the month
field to run the job every third month.
Any lines that begin with a hash mark (#) are comments and are not processed.
As shown in the /etc/crontabfile, the run-partsscript executes the scripts in
the /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/,
and /etc/cron.monthly/directories on an hourly, daily, weekly, or monthly basis respectively. The files in
these directories should be shell scripts.
If a cron job is required to be executed on a schedule other than hourly, daily, weekly, or monthly, it can be added
to the /etc/cron.d/directory. All files in this directory use the same syntax as /etc/crontab. Refer
to Example 38.1, Sample of /etc/crontab for examples.
Users other than root can configure cron jobs by using the crontabutility. All user-defined crontabs are stored in
the /var/spool/cron/directory and are executed using the usernames of the users that created them. To
create a crontab as a user, login as that user and type the command crontab -eto edit the user's crontab using
the editor specified by the VISUALor EDITORenvironment variable. The file uses the same format
as /etc/crontab. When the changes to the crontab are saved, the crontab is stored according to username and
written to the file /var/spool/cron/username.
The cron daemon checks the /etc/crontabfile, the /etc/cron.d/directory, and
the /var/spool/cron/directory every minute for any changes. If any changes are found, they are loaded into
memory. Thus, the daemon does not need to be restarted if a crontab file is changed.
Cron jobs can be run at random intervals, which is useful for highly loaded shared networks in order to avoid
overloading the network. Job randomization is disabled by default but it can be configured in
the /etc/sysconfig/run-partsfile by specifying the following parameters:
RANDOMIZE When set to 1, it enables randomize functionality. When set to 0, cron job randomization
is disabled.
RANDOM Specifies the initial random seed. It has to be set to an integer value greater than or equal
to 1.
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-autotasks.html
2/3
8/24/13
RANDOMTIME When set to an integer value greater than or equal to 1, it provides an additional level of
randomization.
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-autotasks.html
3/3