Anacron
can be used to execute commands periodically, with a
frequency specified in days. Unlike cron(8),
it does not assume that the machine is running continuously. Hence,
it can be used on machines that aren't running 24 hours a day,
to control daily, weekly, and monthly jobs that are
usually controlled by cron.
When executed, Anacron reads a list of jobs from a configuration file
/etc/anacrontab
(see anacrontab(5)). This file
contains the list of jobs that Anacron controls. Each
job entry specifies a period in days,
a delay in minutes, a unique
job identifier, and a shell command.
For each job, Anacron checks whether
this job has been executed in the last n days, where n is the period specified
for that job. If not, Anacron runs the job's shell command, after waiting
for the number of minutes specified as the delay parameter.
After the command exits, Anacron records the date in a special
timestamp file for that job, so it can know when to execute it again. Only
the date is used for the time
calculations. The hour is not used.
When there are no more jobs to be run, Anacron exits.
Anacron only considers jobs whose identifier, as
specified in /etc/anacrontab matches any of
the
job
command-line arguments. The
job
arguments can be shell wildcard patterns (be sure to protect them from
your shell with adequate quoting). Specifying no
job
arguments, is equivalent to specifying "*" (That is, all jobs will be
considered).
Unless the -d option is given (see below), Anacron forks to the
background when it starts, and the parent process exits
immediately.
Unless the -s or -n options are given, Anacron starts jobs
immediately when their delay is over. The execution of different jobs is
completely independent.
If a job generates any output on its standard output or standard error,
the output is mailed to the user running Anacron (usually root).
Informative messages about what Anacron is doing are sent to syslogd(8)
under facility cron, priority notice. Error messages are sent at
priority error.
"Active" jobs (i.e. jobs that Anacron already decided
to run and now wait for their delay to pass, and jobs that are currently
being executed by
Anacron), are "locked", so that other copies of Anacron won't run them
at the same time.