Пользовательский файл crontab: примеры, описание и отзывы

Программная утилита Cron — это планировщик заданий по времени в Unix-подобных компьютерных операционных системах. Пользователи, которые настраивают и поддерживают программные среды, используют Cron для планирования заданий (команд или сценариев оболочки) для периодического запуска в определенное время, даты или интервалы. Обычно он автоматизирует обслуживание или администрирование системы, хотя его универсальный характер делает его полезным для таких вещей, как загрузка файлов из Интернета и обновление электронной почты через определенные временные промежутки. Происхождение названия cron от греческого слова "во времени" - χρόνος (chronos).

Применение

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

Скрипты, выполняемые как задание Cron, обычно используются для изменения файлов или баз данных. Однако они могут выполнять другие задачи, которые не изменяют данные на сервере, такие как отправка уведомлений по e-mail.

Отзывы

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

Обзор

Cron управляется форматом Crontab (cron table) — конфигурационным файлом, который задает команды оболочки для периодического запуска по заданному расписанию. Файлы Crontab хранятся там, куда интегрированы списки задач и другие алгоритмы для приложения. Пользователи могут иметь свои собственные примеры Crontab-файлов, которые могут редактироваться системными администраторами.

Каждая строка файла представляет собой задание. Пример Crontab выглядит следующим образом:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute

Синтаксис каждой строки предполагает выражение Cron, состоящее из пяти полей.

Обычно задача выполняется, когда поля времени/даты соответствуют текущему времени и дате, есть одно исключение: если оба «дня месяца» (поле 3) и «день недели» (поле 5) ограничены, то один или оба должны соответствовать текущему дню.

Например, следующая команда очищает журнал ошибок Apache за одну минуту за полночь (00:01) каждый день: 10 * * * printf > /var/log/apache/error_log.

Данный пример файлов Crontab запускает программу оболочки под названием export_dump.sh в 23:45 (23:45) каждую субботу.

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

Freebsd Crontab: примеры

Некоторые реализации Cron добавляют шестое поле: имя пользователя, которое запускает задание (в зависимости от существования пользователя и разрешений).

Рабочее знание команд Linux требуется для эффективного использования заданий Cron. Выполнение команд Cron можно настроить на минуту, час, день недели, месяца или любую их комбинацию.

Актуальны утилиты по ограничению заданий Cron на общих серверах для работы через 15-минутные интервалы, поскольку избыточные задания могут вызвать большие нагрузки на сервер.

Некоторые примеры содержимого Crontab поддерживают следующие нестандартные макросы:

  • @yearly (или @annually) — обрабатывается один раз в год в полночь 1 января;

  • @monthly — один раз в месяц в 00:00 часов первого дня месяца;

  • @weekly — раз в неделю в полночь в воскресенье;

  • @daily — один раз в сутки в полночь;

  • @hourly — один раз в час в начале часа;

  • @reboot — активируется при запуске приложения.

Макрос @reboot может быть полезен, если есть необходимость запуска сервера под определенным пользователем, у которого нет доступа к настройке init для запуска программы.

Операторы Crontab

Существует несколько способов ввести значения в поле:

  • Оператор запятой (',') определяет список значений: "1,3,4,7,8".

  • Тире ('-') задает промежуточные значения, например: «1-6», что эквивалентно «1,2,3,4,5,6».

  • Asterisk ('*') заполняет все возможные данные для поля. Звездочка в поле времени часа будет эквивалентна «каждый час».

  • Оператор slash ('/'), который может использоваться для пропускания заданного числа значений. Например, «*/3» в поле времени часа эквивалентно «0,3,6,9,12,15,18,21». Команда "\*" указывает «каждый час», а «/3» означает, что используется только первый, четвертый, седьмой, т.е каждый третий час.

Пример пользовательского файла Crontab: обработка временной зоны

Большинство реализаций Cron просто интерпретируют записи Crontab в настройке часового пояса системы, в котором работает утилита. Это может быть источником конфликта, если машина имеет пользователей в разных часовых поясах. Следовательно, реализация Cron может в качестве исключения создавать строки настроек среды «CRON_TZ = <Часовой пояс», интерпретируя последующие примеры crontab относительно этого часового пояса.

Элементы работы Cron

Большинство заданий Cron включают три компонента:

  • Сценарий, который должен быть вызван или выполнен.

  • Команда, выполняющая сценарий на регулярной основе (обычно устанавливается в cPanel).

  • Действие или вывод скрипта, который зависит от того, что вызывает сценарий.

Большинство скриптов, требующих использования задания Cron, предоставляют конкретные инструкции по настройке. Если вы не уверены в корректной работе, обратитесь к автору своего скрипта перед добавлением задания Cron.

Как создать и удалить задание Crontab?

Задачи запускают запланированные команды в определенное время. Инструмент Cron Jobs в cPanel полезен для настройки автоматического обслуживания и других задач беспилотного сервера.

Чтобы создать работу Cron:

  • Войдите в cPanel.

  • В разделе «Дополнительно» нажмите «Рабочие места».

  • В разделе Cron Email убедитесь, что текущий адрес электронной почты действителен. Если нет, введите новый и нажмите «Обновить электронную почту». Вы получите электронное письмо после завершения.

  • В разделе «Добавить новое задание для Cron» используйте раскрывающееся меню «Общие настройки», чтобы выбрать из списка регулярно используемых интервалов; или установите частоту вашего задания, используя раскрывающийся список рядом с каждым блоком времени. Общие настройки варьируются от каждой минуты до одного раза в год.

  • В поле Command введите нужную команду.

  • Нажмите «Добавить новое задание».

Затем ваша задача Cron будет выполнять файл в определенное время, дату и повторение в соответствии с выбранными вами настройками.

Удаление или редактирование задания

Чтобы удалить или отредактировать задание Cron:

  • В расширенном разделе cPanel щелкните значок «Рабочие места».

  • Прокрутите список до последнего раздела «Текущие вакансии».

  • Найдите задание Cron, которое вы хотите отредактировать или удалить.

  • В разделе «Действия» для соответствующего задания Cron нажмите «Изменить» или «Удалить».

Комментарии