Библиотека сайта rus-linux.net
9.4. Automating Tasks with Cron and Crontab files
Like most Linux users, you may find it necessary to schedule repetitive tasks to be run at a certain time. Such tasks can occur as frequently as once a minute, to as infrequently as once a year. This scheduling can be done by using the ``cron'' facilities.
The cron facilities as implemented in Linux are fairly similar to
those available in other Unix implementations. However, Red Hat has
adopted a slightly different way of scheduling tasks than is usually done
in other distributions of Linux. Just as in other distributions,
scheduling information is placed in the system
``
'' file (locating in the
``crontab
'' directory), using the
following format:/etc/
minute hour day month year command |
You can specify each time component as an integer number (eg. 1
through 12 for the months January through December), or specify one or
more components as ``*
'' characters which will be
treated as wildcards (eg. * in the month component means the command will
run at the given day and time in every month. Here
are some examples:
# Mail the system logs at 4:30pm every June 15th. 30 16 15 06 * for x in /var/log/*; do cat ${x} | mail postmaster; done # Inform the administrator, at midnight, of the changing seasons. 00 00 20 04 * echo 'Woohoo, spring is here!' 00 00 20 06 * echo 'Yeah, summer has arrived, time to hit the beach!' 00 00 20 10 * echo 'Fall has arrived. Get those jackets out. :-(' 00 00 20 12 * echo 'Time for 5 months of misery. ;-(' |
Note that commands which produce output to standard out (ie. a
terminal) such as the examples above using ``echo
''
will have their output mailed to the ``root
'' account.
If you want to avoid this, simply pipe the output to the null device as
follows:
00 06 * * * echo 'I bug the system administrator daily at 6:00am!' >/dev/null |
In addition to the standard ``crontab
'' entries,
Red Hat adds several directories:
/etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ |
As their names suggest, executable files can be placed in any of these directories, and will be executed on an hourly, daily, or weekly basis. This saves a bit of time when setting up frequent tasks; just place the executable script or program (or a symbolic link to one stores elsewhere) in the appropriate directory and forget about it.