Занятие 9.

Тема:   Планирование заданий.

 Работа с дисковыми накопителями.

Вид занятия:  лекция, практическое занятие.

Учебные вопросы:

1. Понятие планирования заданий.

2. Команда at.

3. Демон cron. Команда crontab.

4. Работа с дисковыми накопителями, команда mount

Время: 90 минут

Литература:

1. Системная справочная служба Linux Man

2. Армстронг (мл.) Джеймс. Секреты Unix : 2-е изд.: Пер. с

  англ.: Уч. пос. - М.: Издательский дом Вильямс, 2000. - 1072

  с.: ил. - Парал. тит. англ.


Ход занятия.

1. Очень часто в Linux администратор встречается с проблемой, когда выполнение какой-либо программы (или shell-сценария) может происходить и без его присутствия, но необходим инструмент, реализующий эту возможность.

В современных Linux-системах для этой цели принято использовать механизмы планирования заданий. Реализованы эти механизмы с помощью демонов планирования заданий - at и cron.

С помощью этих программ появляется возможность установить выполнение программы на заранее известное время. Команда at используется в тех случаях, когда выполнение задания  - разовая процедура. Если же задание предполагается выполнять с какой-либо периодичностью, то лучше всего использовать демон cron и команду crontab.

Методика планирования представляет из себя понимание процессов, происходящих с сервером (или персональным компьютером) в каждый момент времени. Для планирования применяется форма, аналогичная приведенной ниже с дискретизацией в 5 минут:

01 число

0 м

5 м

10 м

15 м

20 м

25 м

30 м

35 м

40 м

45 м

50 м

55 м

0 ч

Резервная копия

1 ч

 

 

 

 

 

 

 

 

 

 

 

 

2 ч

 

 

 

Обновления Linux

Установка обновлений Linux

 

 

3 ч

 

 

 

 

 

 

 

 

 

 

 

 

4 ч

СМОТРИ   НЕДЕЛЬНУЮ   ФОРМУ

5 ч

 

6 ч

 

 

 

 

 

 

 

 

 

 

 

 

7 ч

 

 

 

 

 

 

 

 

 

 

 

 

8 ч

РЕЗЕРВ ДЛЯ НЕПРЕДВИДЕННЫХ СЛУЧАЕВ

9 ч

 

 

 

 

 

 

 

 

 

 

 

 

10 ч

 

 

 

 

 

 

 

 

 

 

 

 

11 ч

 

 

 

 

 

 

 

 

 

 

 

 

12 ч

 

 

 

 

 

 

 

 

 

 

 

 

13 ч

Mozilla

 

 

 

 

 

 

 

 

 

 

 

14 ч

 

 

 

 

 

 

 

 

 

 

 

 

15 ч

 

 

 

 

 

 

 

 

 

 

 

 

16 ч

 

 

 

 

 

 

 

 

 

 

 

 

17 ч

 

 

 

 

 

 

 

 

 

 

 

 

18 ч

 

 

 

 

 

 

 

 

 

 

Проверка            >

19 ч

с помощью tripware целостности файловой          >   

20 ч

системы

 

 

 

 

 

 

 

 

 

 

 

21 ч

 

 

 

 

 

 

 

 

 

 

 

 

22 ч

ВЫСОКАЯ   ЗАГРУЗКА   СИСТЕМЫ   В   ЭТО   ВРЕМЯ

23 ч

 

Составляется расписание на каждый день месяца. Совместно с ней составляется форма по дням недели, которая позволяет планировать выделенные 2 часа (или больше, если это потребуется). Пример такой формы для понедельника:

понедельник

0 м

5 м

10 м

15 м

20 м

25 м

30 м

35 м

40 м

45 м

50 м

55 м

4 ч

Отчет SARG

 

 

 

 

 

 

 

 

 

5 ч

 

 

 

 

 

 

 

 

 

 

 

 

Эти формы позволят оптимально использовать время работы сервера и грамотно планировать задания.

После того, как будут выписаны все задания, стоящие в текущий момент, нужно будет найти подходящее место для вновь вставляемого задания. Опытные системные администраторы считают, что стоит выделять около часа в сутки в расписании заданий для того, чтобы всегда можно было вставить непредвиденное разовое задание, а также освобождать от выполнения заданий время наивысшей загрузки системы. Не советуется планировать несколько заданий на одной и то же время.

2. Семейство команд at (at, atq, atrm) представляет собой инструменты для выполнения задания в определенное время по таймеру.  Для правильного функционирования данной команды в системе должен быть запущен демон atd. Демон atd поддерживает очередь заданий, которые должны быть выполнены в то или иное время.

Для постановки задания (или нескольких заданий в очередь на одно и то же время) вам необходимо выполнить команду at:

Пример 1.

[student@Klass801 student]$ at 19:00

at> /home/student/bin/first.sh

<Control-D>

job 1 at 2004-12-01 13:01

[student@Klass801 student]$_

Результат выполнения команды, указанной демоном at будет записан в Ваш почтовый ящик linux (/var/spool/mail/student). Но система планирования at позволяет и управлять поставленными в очередь заданиями. Просмотреть очередь заданий можно используя команду atq:

Пример 2.

[student@Klass801 student]$ atq

1       2004-12-01 13:01 a student

[student@Klass801 student]$

Команда at позволяет поставить в очередь несколько заданий, который будут последовательно выполнены друг за другом. Сделать это можно как в интерактивном режим (набрав команду at в командной строке), так и указав команде at параметр -f:

[student@Klass801 student]$ at -f commands 14:50

job 8 at 2004-12-05 14:50

[student@Klass801 student]$_

Команда  atrm удаляет из очереди задание:

[root@ns root]# atq

7       2004-12-05 14:48 a root

8       2004-12-05 14:50 a root

[root@ns root]# atrm 7

[root@ns root]# atq

8       2004-12-05 14:50 a root

[root@ns root]#

При планировании заданий с помощью команды at стоит уделять особое внимание времени выполнения задания, чтобы средняя загрузка системы не превысили предельно допустимое значение.

3. В отличие от команд at, демон cron и команда управления планированием crontab позволят Вам точно планировать задания. Как в случае с at, задания запускает программа-демон crond. Команда crontab служит лишь для управления заданиями. Перед использованием команды необходимо создать файл, описывающий таблицу заданий. Формат файла таков:

минуты часы дни_месяца месяц дни_недели команда

минуты - числа от 0 до 59, или *

часы - числа от 0 до 23, или *

дни_месяца - числа от 1 до 31, или *

месяц - числа от 1 до 12, или *

дни_недели - числа от 0 до 6, причем 0 - воскресенье, или *; например:

0 10 * * *  /home/student/bin/script   #запуск в 10:00 ежедневно

15 * * * 1  /home/student/bin/script2  #в 15 минут каждого часа

Команда crontab позволяет использовать периоды:

10-15/5 * * * * /home/student/bin/script3 #ежедневно, каждый час, с 10 до 15 минут

                                         #с периодичностью в 5 минут

После создания файла заданий необходимо вызвать команду crontab и указать ей в качестве параметра имя файла с заданиями :

[student@Klass801 student]$ crontab jobs

Просмотреть список заданий, установленных Вами можно с помощью параметра -l :

[student@Klass801 student]$ crontab -l

# DO NOT EDIT THIS FILE - edit the master and reinstall.

# (/tmp/crontab.1333 installed on Sat Dec  4 15:56:57 2004)

# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

10 * * * * /home/student/bin/script

[student@Klass801 student]$

Очистить список заданий можно с помощью параметра -r :

[student@Klass801 student]$ crontab -l

# DO NOT EDIT THIS FILE - edit the master and reinstall.

# (/tmp/crontab.1333 installed on Sat Dec  4 15:56:57 2004)

# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

10 * * * * /home/student/bin/script

[student@Klass801 student]$ crontab -r

[student@Klass801 student]$ crontab -l

no crontab for student

[student@Klass801 student]$

Команда crontab позволяет также и редактировать список заданий с помощью параметра -e. В качестве редактора будет использоваться редактор, указанный (в порядке очередности) в переменной окружения $VISUAL, $EDITOR или /bin/vi. После сохранения файла, crontab автоматически переинициализирует таблицу заданий.

Параметр -u User позволяет управлять заданиями других пользователей. При использовании этого параметра не из под под суперпользователя, вам придется ввести пароль.

4. Очень часто планирование заданий связано с созданием резервных копий. Как правило, резервные копии создаются на внешние носители (магнитные ленты, диски и прочее). Сегодня мы с вами попробуем научиться монтировать различные внешние устройства. Монтирование - подключение файловых систем внешних накопителей в один из каталогов корневой ФС (точку монтирования). Для монтирования устройств в Unix применяется команда mount. При запуске без параметров mount покажет все ФС, смонтированные на текущий момент, а такжде параментры, используемые при монтировании.

root@ADM:/home/oem# mount

/dev/sda1 on / type ext3 (rw,errors=remount-ro)

proc on /proc type proc (rw,noexec,nosuid,nodev)

/sys on /sys type sysfs (rw,noexec,nosuid,nodev)

varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)

varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)

procbususb on /proc/bus/usb type usbfs (rw)

udev on /dev type tmpfs (rw,mode=0755)

devshm on /dev/shm type tmpfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

lrm on /lib/modules/2.6.20-15-generic/volatile type tmpfs (rw)

binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

Эта команда принимает много параметров, но мы с вами поговорим о следующих:

-t FS - указывает файловую систему, которая используется на внешнем устройстве

-r - смонтировать ФС в режиме только чтение

-w - смонтировать ФС в режиме чтение/запись

-o - указать дополнительные опции монтирования, такие как кодировку, набор символов, под каким пользователем монтировать и прочие. Параметры зависят от типа файловой системы, и их стоит уточнять в man. Общий синтаксис man выглядит как:

man -t FS -w/-r device mountpoint -o external_fs_options