Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Cron и crontab - как планировать задачи в Linux

Оригинал: Cron and crontab - How to schedule things on Linux
Автор: Riccardo Capecchi
Дата публикации: 22 Сентября 2011 г.
Перевод: А.Панин
Дата публикации перевода: 14 ноября 2012 г.

Люди, знакомые с древнегреческой мифологией, без сомнения знают слово Хронус - имя отца греческих богов Олимпа. Слово "хронос" означает время в греческом языке и латыни, таким образом, от этих двух слов образованы слова хронометр и хронология. Поэтому и в области программного обеспечения термин crontab подразумевает работу со временем.

Если говорить кратко, cron является системной службой, которая предназначена для выполнения запланированных задач.

Служба cron запускается во время загрузки системы GNU/Linux и обычно выполняет ряд задач по обслуживанию системы, назначенных автоматически при установке (удаление устаревших записей в системном журнале, проверка некоторых программ, и.т.д.).

Задачи cron широко используются при автоматическом обслуживании и администрировании систем и вы можете обнаружить cron или аналоги в большинстве UNIX-систем, а также в GNU/Linux. Программа crontab используется для установки, удаления и вывода таблиц, используемых для управления службой cron. Каждый пользователь может иметь свои собственные таблицы crontab, сохраненные в файлах директории /var/spool/cron/crontabs, которые не предназначены для редактирования напрямую.

Синтаксис таблиц и использование crontab

Конфигурация crontab хранится в текстовом файле специального формата, для его редактирования перейдите в терминал и введите:
crontab -e

Отредактируйте файл по своему усмотрению и сохраните его.

Можете просмотреть ваш файл crontab при помощи команды:
crontab -l
Формат строк crontab представлен ниже:
MIN HOUR DOM MON DOW CMD
Поле Описание Допустимые значения
MIN Поле минут От 0 до 59
HOUR Поле часов От 0 до 23
DOM День месяца От 0 до 31
MON Поле месяца От 1 до 12
DOW День недели От 0 до 6
CMD Команда Любая команда, которую необходимо выполнить

Поле может содержать звездочку (*), которая обычно используется в значении "первое-последнее".

Допускается использование диапазонов значений. Диапазоны записываются в виде двух значений, разделенных дефисом. Заданный диапазон всегда включает в себя начальное и конечное значение. Например, диапазон 8-11 для поля часов подразумевает выполнение задачи в 8, 9, 10 и 11 часов.

Использование списков значений также возможно. Списки записываются в виде множества значений или диапазонов значений, разделенных запятыми. Примеры списков: "1,2,5,9", "0-4,8-12".

Значения шагов могут быть использованы вместе с диапазонами значений. Для пропуска значений в диапазоне, запись диапазона дополняется символом "/" и значением шага. Например, диапазон "0-23/2" в поле часов может быть использован для выполнения задачи в диапазоне через час.

Вместо первых пяти полей могут быть также использованы специальные строки:
Строка Значение
@reboot Выполнять один раз при запуске.
@yearly Выполнять раз в год, "0 0 1 1 *".
@annually То же, что и @yearly.
@monthly Выполнять раз в месяц, "0 0 1 * *".
@weekly Выполнять раз в неделю, "0 0 * * 0".
@daily Выполнять раз в день, "0 0 * * *".
@midnight То же, что и @daily
@hourly Выполнять раз в час, "0 * * * *".

Шестым полем (завершающим строку) является команда, которую необходимо выполнить. Команда, ограничивающаяся символом переноса строки или символом "%", будет выполнена командной оболочкой /bin/sh или другой командной оболочкой, путь к которой задан в переменной SHELL в файле crontab.

Команды crontab начинают выполняться в тот момент, когда значения полей минут, часов и месяца совпадает с текущим временем и когда по крайней мере одно из двух полей дня (дня месяца или дня недели) совпадает с текущим днем.

Заключение

Программа cron в Linux предоставляет эффективную возможность планирования фоновых задач на заданный день и время. В том случае, если вы используете Gnome в качестве окружения рабочего стола, простейшим вариантом планирования задач является использование приложения gnome-schedule. Планировщик задач позволяет вам выбрать из трех вариантов при создании новой задачи. У вас будет возможность выбрать вариант задачи "resorting task", являющийся наиболее часто используемым при работе приложения gnome-schedule в качестве графического интерфейса для cron. Дополнительно у вас есть возможность создавать собственные шаблоны для планирования задач; например, если вам захочется запускать программы в дни выбранных праздников, вы можете создать шаблон для этой цели и вам не придется переделывать правила cron каждый раз. Эта функция не требуется большинству пользователей, тем не менее, здорово, что она существует.

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

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

Использовали ли вы cron ранее? Если нет, то вам стоит попробовать. Эта программа действительно поможет вам в планировании задач в вашей Linux-системе.

Полезные сайты