7.6. Планировщики заданий

7.6.1. Выбор планировщика

В состав Fedora входит три планировщика: crond, anacron и atd. Планировщик crond используется для создания расписания, т.е. для периодического выполнения указанных пользователем команд в определенное время. Например, вы можете задать команду, которая будет выполняться каждый час, каждый день или раз в месяц.

Планировщик atd немного проще. Он умеет выполнять программы в строго определенное время, т.е. вы можете задать время и дату, например, 7 часов 11 октября, и команду, которая будет выполнена и это время.

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

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

7.6.2. Планировщик crond

7.6.2.1. Файл конфигурации /etc/crontab

Основной конфигурационный файл данного планировщика называется /etс/crontab. Этот файл является общесистемным расписанием и его может редактировать только пользователь root. Формат файла crontab следующий:

М Ч Д ММ ДН Команда

где;

М - минута (0-59);

Ч - час (0-23);

Д - день (1-31);

ММ - месяц (1-12);

ДН - день недели (0=Вс, 1=Пн и т.д.).

Рассмотрим типичный пример данного файла (листинг 7.3).

Листинг 7.3. Типичный пример файла crontab

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

Здесь SHELL, PATH, MAILTO и HOME - это переменные окружения, задающие, соответственно, оболочку, путь поиска программ, адрес администратора и домашний каталог - они нужны только в общесистемном файле. Нас больше интересует вторая часть этого файла:

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

Команда run-parts означает, что должны быть выполнены все выполняемые файлы (обычно это сценарии) из указанного каталога. Не сложно догадаться, что из каталога /etc/cron.hourly команды будут выполняться каждый час, из каталога /etc/cron.daily - каждый день (в 4 часа утра), из каталога /etc/cron.weekly - раз в неделю по воскресеньям, а из каталога /eta/сron.monthly - раз в месяц, 1-го числа.

7.6.2.2. Правильное расписание для домашнего компьютера

Взгляните на формат файла crontab, а затем на имеющееся расписание. Программа crond довольно 'древняя'. Первоначально она появилась в UNIX, а UNIX преимущественно устанавливалась на серверах, которые работают круглосуточно и никогда не выключаются. Потом программа crond ''перекочевала' в Linux. Система Linux тоже сначала использовалась на машинах, которые практически никогда не выключаются - на компьютерах профессиональных пользователей-фанатов и на серверах. Со временем система Linux плавно переехала на домашние компьютеры, но в 4 часа утра компьютеры домашних пользователей… выключены. Следовательно, заданные команды не будут выполнены никогда!

Поэтому нам, как домашнему пользователю, нужно изменить расписание хотя бы так, как показано ниже (думаю, к 9 часам можно включить компьютер практически в любой день, включая воскресенье),

02 9 * * * root run-parts /etc/cron.daily

22 9 * * 0 root run-parts /etс/cron.weekly

42 9 1 * * root run-parts /etc/cron.monthly

Если вы работаете за домашним компьютером преимущественно вечером, то время выполнения следует 'переместить' на вечер:

02 20 * * * root run-parts /etc/cron.daily

22 20 * * 0 root run-parts /etc/cron.weekly

42 20 1 * * root run-parts /etc/cron.monthly

Кроме того, может потребоваться изменить день недели для команд, которые выполняются еженедельно (в приведенных примерах задан день недели 0 = Bс, а в воскресенье компьютер может быть выключен):

22 20 * * 1 root run-parts /etc/cron.weekly

В результате команды из каталога /etc/cron.weekly будут запускаться каждый понедельник в 20 часов 22 минуты.

7.6.2.3. Сценарии

Как уже было отмечено выше, в каталоги /etc/cron* помещаются сценарии, которые нужно выполнить в указанное время. Рассмотрим шаблон типичного сценария (листинг 7.4).

Листинг 7.4. Шаблон сценария

#!/bin/bash

команды

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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату