Chapter 39. Automated Tasks
locatecommand is updated daily. A system administrator can use automated tasks to perform periodic backups, monitor the system, run custom scripts, and more.
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.
39.1.1. Configuring Cron Jobs
/etc/crontab, contains the following lines:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
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.
/etc/crontabfile represents a job and has the following format:
minute hour day month dayofweek command
minute— any integer from 0 to 59
hour— any integer from 0 to 23
day— any integer from 1 to 31 (must be a valid day if a month is specified)
month— any integer from 1 to 12 (or the short name of the month such as jan or feb)
dayofweek— any integer from 0 to 7, where 0 or 7 represents Sunday (or the short name of the week such as sun or mon)
command— the command to execute (the command can either be a command such as
ls /proc >> /tmp/procor the command to execute a custom script)
1-4means the integers 1, 2, 3, and 4.
3, 4, 6, 8indicates those four specific integers.
/<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.
run-partsscript executes the scripts in the
/etc/cron.monthly/directories on an hourly, daily, weekly, or monthly basis respectively. The files in these directories should be shell scripts.
/etc/cron.d/directory. All files in this directory use the same syntax as
/etc/crontab. Refer to Example 39.1, “Sample of /etc/crontab” for examples.
Example 39.1. Sample of /etc/crontab
# record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh
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
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
/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.
/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
RANDOMTIME— When set to an integer value greater than or equal to
1, it provides an additional level of randomization.
Example 39.2. Sample of /etc/sysconfig/run-parts - Job Randomization Setting
RANDOMIZE=1 RANDOM=4 RANDOMTIME=8
39.1.2. Controlling Access to Cron
/etc/cron.denyfiles are used to restrict access to cron. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The cron daemon (
crond) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to add or delete a cron job.
cron.allowexists, only users listed in it are allowed to use cron, and the
cron.denyfile is ignored.
cron.allowdoes not exist, users listed in
cron.denyare not allowed to use cron.
39.1.3. Starting and Stopping the Service
/sbin/service crond start. To stop the service, use the command
/sbin/service crond stop. It is recommended that you start the service at boot time. Refer to Chapter 18, Controlling Access to Services for details on starting the cron service automatically at boot time.