Формат файла crontab

28 Май 2008
Опубликовано VladSavitsky

Задача

Разобраться в этом формате, чтобы добавить свои задачи в системный cron.

Решение

В Wikipedia можно вкратце посмотреть о формате с примерами.
На сайте www.opennet.ru есть man`ы на русском языке, в частности по формату файла crontab`а. Ну а самую актуальную, для Вашей системы, информацию Вы получите, набрав команду man 5 crontab.

Строка может быть трёх типов: комментарий (начинается с #), задание переменной среды (SHELL,MAILTO,PATH,LOGNAME,HOME) или команда для cron. Строки не могут смешиваться, то есть нельзя писать комментарий в строке с командой.

С первым типом всё понятно - комментарий он и есть комментарий.

Второй тип - задание переменной выглядит как "имя_переменной = величина". За подробностями о переменных обращайтесь в справку.

Ну и третий тип, самый интересный для нас, выглядит как шесть полей разделённых пробельными символами (пробелы и/или знаки табуляции). Первые пять полей задают время для команды, шестой - имя программы:

(минуты:0-59) (часы:0-23) (дни месяца:0-31) (месяц:0-12) (день недели:0-6, 0-воскресенье) (программа_с_параметрами)

Каждое из первых пяти полей может быть задано следующим образом:

  • Звёздочка (*) - обозначает весь диапазон (от первого до последнего)
  • Диапазон чисел, от и до. Например "5-7" будет означать 5,6 и 7
  • Списки. Это числа (или диапазоны) разделенные запятыми. Например: "1,5,10,11" или "1-11,19-23".
  • Звёздочка или диапазон с шагом. Используется для пропусков в диапазонах. Шаг указывается после косой черты. Например "2-10/2" будет значить "2,4,6,8,10", а выражение "*/2" в поле "часы" будет означать "каждые два часа.

Последнее поле (шестое) определяет команду для запуска.

Примеры (взяты из Wikipedia):

# как обычно, с символа '#' начинаются комментарии
# в качестве командного интерпрететора использовать /bin/sh
SHELL=/bin/sh
# результаты работы отправлять по этому адресу
MAILTO=paul@example.org
# добавить в PATH
PATH=$PATH:$HOME/bin

#### Здесь начинаются задания
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo «Пора домой» | mail -s «Уже 22:00» john

23 0-23/2 * * * echo «Выполняется в 0:23, 2:23, 4:23 и т. д.»
5 4 * * sun echo «Выполняется в 4:05 в воскресенье»
0 0 1 1 * echo «С новым годом!»
15 10,13 * * 1,4 echo «Каждый понедельник и четверг в 10:15 и 13:15»

Как добавить задачу в crontab?

Для этого есть одноимённая программа: crontab :)
On-line man-страница: crontab. Ну а "правильную" помощь Вы получите, набрав в unix-shell man 1 crontab.

Формат команды:

crontab { -l | -r | -e }

где:
-l - выводит текущих crontab файл на стандартный вывод.
-r - удаляет текущий crontab файл.
-e - используется для редактирования текущего crontab используя редактор, заданный переменной окружения VISUAL или EDITOR.

Таким образом, вводим crontab -e, добавляем нужную строку с командой и нажимаем "Ctrl-D".

Использованные материалы

Оживление хрона

Полезные ссылки

Авторы решений:
Версия Drupal:
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>