• No results found

107.2 Automate System Administration Tasks

In document LPI Study Guide (Page 196-198)

Candidates should be able to use cron or anacron to run jobs at regular intervals and to use at to run jobs at a specific time.

Key Knowledge Areas •Manage cron and at jobs.

•Configure user access to cron and at services.

1. Cron Jobs

A Cron is a time scheduled jobs on the UNIX system. For any administrative tasks that have to be run regularly, such as Back Ups and Network Services, then the cron facility is the best way to do it. This section is about the cron, anacron and other such facilities.

The cron facility, consists of the crond daemon and a set of tables – crontabs - describing what work is to be done, when and how frequently. The daemon, which is started by init, wakes up every minute and checks the crontabs to determine what is to be done. Users manage crontabs using the crontab command.

Cron jobs can be run as shell scripts, and are better designed to accept no parameters.

crontabs

To create a crontab, the crontab command with the -e (for "edit") option will open a text editor where your specifications of the cron job can be specified. Every crontab entry will contain six fields:

Minute, hour, day of the month, month of the year, day of the week and String to be executed by sh. The respective ranges for the time fields are: 0-59, 0-23, 1-31 and 1-12, 0-6 (Sunday=0).

NOTE: For all time fields, you can specify a range, or a single unit of time. You can specify the day of

the week, using its short name: sun, mon, tue, and so on.

The final field will always be interpreted as a string to pass to the Bash.

Crontabs can use special characters, like % = newline, but these have to be preceded with a backslash (\). The line up to the first % is passed to the shell, while any line(s) after the % are passed as standard input.

Crontab Example:

0,30 20­23 * 8 mon­fri /home/tux/backup.sh

Here, the back up shell script is executed at the 0th and 30th minutes (every 30 minutes), for the hours between 8 P.M and 11 P.M. every monday to Friday, during August. See the man page for crontab(5)

for details on additional ways to specify times./ For further details on how to specify times please see the man page for crontab.

Cron jobs output can is usually sent as an email to the user who set up the cron job. Normally, like other system processes, the syslog facility will capture whatever the cron job did. Below is an example of a mailed report.

From tux   @  it.northpole.com    Mon Jul  2 23:00:02 2010 Date: Mon, 2 Jul 2010 23:00:01 ­0400

From: [email protected] (Cron Daemon) To: tux   @  it.northpole.com   

Subject: Cron <tux@it> /home/tux/backup.sh Content­Type: text/plain; charset=UTF­8 Auto­Submitted: auto­generated X­Cron­Env: <SHELL=/bin/sh> X­Cron­Env: <HOME=/home/tux> X­Cron­Env: <PATH=/usr/bin:/bin> X­Cron­Env: <LOGNAME=tux> X­Cron­Env: <USER=tux> BackUp was successful!

Location of the crontabs

All crontabs are stored in /etc/spool/cron/*name of the user who created it*. Thus crontab is a suid program it can only run by a user with root authority.

The cron facility checks some more directories as well i.e. /etc/crontab and /etc/cron.d. As these are not user but system crontabs they have one more field between "day" and "command". This field just defines for which user the command should be run (root in normal case).

/etc/crontab example 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

In this case, the cron jobs are done by the run-parts command, whereas the /etc/crontab  simply controls the timing.

NOTE: Note also that the crontab can include shell variables that have been set before the commands are run. All these cronjobs are run for the user root.

Whereas the cron facility is ideal on Computer systems that run continuously, and as such jobs that run hourly, some systems may infact require to be turned off every now and then. Consequently, you can only schedule jobs that run daily, weekly or monthly. A facility to do this is called anacron (for "anachronistic cron").

Anacron will keep timestamp files in /var/spool/anacron as a way to record when jobs are run. Anacron works by checking to see if the required number of days has passed since the job was last run and then determines to run it if necessary. The anacrontab is stored in /etc/anacrontab, and  may contain environment variables. Every anacron job has four fields.

Time – Delay – Job-identifier - Command

The time is always a number of days, but can be specified as @weekly, @monthly to ensure that a job runs only then. The delay is the number of minutes to wait after the job is due to run before actually starting it. This feature can be useful if you do not want to flood the system with multiple jobs! You can use this to prevent a flood of jobs when a system first starts.

NOTE – Unlike the specific jobs contained in them, both /etc/crontab and /etc/anacrontab –  can only be updated by direct editing, not by crontab -e

Sometimes you just want to run a job once. Linux provides the at command. The instructions to be executed are read from a file specified with the ­f option, or from stdin if ­f is not used. To display the time for the job to run, you can use the ­v option. Below is an example:

$ at ­f backup.sh ­v 10:25 Wed Jul  7 10:25:00 2010

job 5 at Wed Jul  7 10:25:00 2010 Job output from at

From tux   @  it.northpole.com    Wed Jul  7 10:25:00 2010 Date: Wed, 7 Jul 2010 10:25:00 ­0400

From: Tux <tux   @  it.northpole.com   >

Subject: Output from your job        5 To: tux   @  it.northpole.com   

BackUp was successful!

The at command also has a ­q option. When used, this option increases the nice value for the job. Be sure to look at the man pages for more details on these features.

In document LPI Study Guide (Page 196-198)

Related documents