Cron
Usage:
Cron
is a daemon that executes scheduled commands. Cron is started
automatically from /etc/init.d on entering multi-user runlevels. Cron
searches its spool area (/var/spool/cron/crontabs) for crontab files
(which are named after accounts in /etc/passwd); crontabs found are
loaded into memory. Note that crontabs in this directory should not
be accessed directly - the crontab command should be used to access
and update them.
Cron
also reads /etc/crontab, which is in a slightly different format.
Additionally, cron reads the files in /etc/cron.d.
Cron
then wakes up every minute, examining all stored crontabs, checking
each command to see if it should be run in the current minute. When
executing commands, any output is mailed to the owner of the crontab
(or to the user named in the MAILTO environment variable in the
crontab, if such exists). The children copies of cron running these
processes have their name coerced to uppercase, as will be seen in
the syslog and ps output.
Additionally,
cron checks each minute to see if its spool directory's modtime (or
the modtime on /etc/crontab) has changed, and if it has, cron will
then examine the modtime on all crontabs and reload those which have
changed. Thus cron need not be restarted whenever a crontab file is
modified. Note that the crontab(1) command updates the modtime of the
spool directory whenever it changes a crontab.
Special
considerations exist when the clock is changed by less than 3 hours,
for example at the beginning and end of daylight savings time. If the
time has moved forwards, those jobs which would have run in the time
that was skipped will be run soon after the change. Conversely, if
the time has moved backwards by less than 3 hours, those jobs that
fall into the repeated time will not be re-run.
Only
jobs that run at a particular time (not specified as @hourly, nor
with '*' in the hour or minute specifier) are affected. Jobs which
are specified with wild cards are run based on the new time
immediately.
Clock
changes of more than 3 hours are considered to be corrections to the
clock, and the new time is used immediately.
In
Debian and Redhat cron treats the files in /etc/cron.d as extensions
to the /etc/crontab file (they follow the special format of that
file, i.e. they include the user field). The intended purpose of this
feature is to allow packages that require finer control of their
scheduling than the /etc/cron.{daily,weekly,monthly} directories
allow to add a crontab file to /etc/cron.d. Such files should be
named after the package that supplies them. Files must conform to the
same naming convention as used by run-parts: they must consist solely
of upper- and lower-case letters, digits, underscores, and hyphens.
Like /etc/crontab, the files in the /etc/cron.d directory are
monitored for changes.
You
should use absolute path names for commands like /bin/ls. This is to
insure you call the correct command.
|
Scheduling explained
As you can see there are 5 stars. The stars represent different date parts in the following order:- minute (from 0 to 59)
- hour (from 0 to 23)
- day of month (from 1 to 31)
- month (from 1 to 12)
- day of week (from 0 to 6) (0=Sunday)
Features:
1.
Job Scheduler
a.
Minutely
b.
Hourly
c.
dayily
d.
monthly
e.
Yearly
Note:
Fields a-e are spefied as per the order above in appropriate config.
file
2.
Assume computer is always on unlike anacron
3.
Maintain global and per-user schedules
4.
/var/spool/cron - stores crontabs for /etc/passwd user or LDAP or
otherwise
5.
Checks ALL config files every minute, including /etc/anacrontab
6.
Supplies 'crontab' utility to manage jobs
Tasks:
1.
Analyze current cron setup
a.
'ps -ef | grep cron'
b.
'/etc/crontab'
2.
Define system wide job
a.
'*/1 * * * * mallik /usr/bin/uptime >>
/home/mallik/uptime.stat'
3.
Define per-user job
a.
'crontab -e' - run as user principle: 'mallik'
4.
Manipulate 'mallik's' job as root
a.
'crontab -e -u mallik' - run as root - edits user's job(s)
b.
'crontab -l -u mallik' - run as root - lists user's job(s)
5.
Restrict Cron-access
a.
'/etc/cron.allow' - add mallik to the list - User must be on the list
in order to submit jobs to cron
b.
'/etc/cron.deny' - add mallik to the list to deny submitting cron
jobs
Anacron:
Features:
1.
Runs jobs once per day during an allowed interval
2.
Assumes computer is NOT always on, unlike: Cron
3.
Facilitates delays in starting jobs - reduces resources contention
4.
Maintains one schedule: '/etc/anacrontab'
5.
Requires little-to-no intervention; handled by the system
Tasks:
1.
Examine: '/etc/anacrontab'
Example:
cron job that runs daily at 5:30PM local time and executes -/bin/echo hello.
crontab -e
17 30 * * * /bin/echo hello
No comments:
Post a Comment