Понимание синтаксиса cron

LinuxBeginner
Практиковаться сейчас

Введение

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

Cron — это планировщик заданий, работающий строго по времени. Он использует специальный синтаксис конфигурации, чтобы точно определить, когда нужно запускать команды. Таблицу конфигурации часто называют «crontab».

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

Сначала запись crontab вроде 0 2 * * * может показаться непонятной. В этой лабораторной работе вы научитесь интерпретировать и записывать такой синтаксис. Вы:

  1. Изучите системный crontab: просмотрите глобальный файл конфигурации cron.
  2. Разберёте синтаксис: поймёте назначение пяти полей времени и даты.
  3. Составите расписание: создадите корректное выражение cron для ежедневной задачи.

Просмотр системной таблицы cron

Быстрый способ понять синтаксис cron — просмотреть общесистемный файл конфигурации /etc/crontab. Обычно в этом файле есть полезный заголовок с описанием расположения полей.

Этот файл служит одновременно рабочим файлом конфигурации и справочным материалом. Во многих системах Linux здесь есть комментарии, потому что синтаксис cron компактный и мощный, но его легко неправильно прочитать, пока вы не разберётесь с порядком полей.

Выполните следующую команду:

cat /etc/crontab

Найдите в выводе раздел Example of job definition (его строки могут немного отличаться в разных дистрибутивах):

## .---------------- minute (0 - 59)
## |  .------------- hour (0 - 23)
## |  |  .---------- day of month (1 - 31)
## |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
## |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
## |  |  |  |  |
## *  *  *  *  * user-name command to be executed

Эта схема показывает, что каждое расписание cron состоит из пяти полей, за которыми указывается команда для запуска:

  1. Минута (0–59)
  2. Час (0–23, 24-часовой формат)
  3. День месяца (1–31)
  4. Месяц (1–12)
  5. День недели (0–7; значения 0 и 7 обозначают воскресенье)

Звёздочка * — это подстановочный символ со значением «каждый» или «любой». Например, * в поле месяца означает «каждый месяц».

Выражения cron компактны, потому что каждое поле уточняет расписание. Вместе поля описывают повторяющийся момент времени. Одна из самых важных привычек, которую нужно выработать в начале, — читать поля слева направо: минута, час, день месяца, месяц, день недели.

Пример: 17 * * * * означает «в 17-ю минуту каждого часа, каждый день».

Подготовка файла с синтаксисом

Теперь, когда структура понятна, потренируемся записывать запись cron.

Мы создадим текстовый файл и сначала составим выражение cron в нём. Это хорошая практика перед добавлением записи в настоящий системный планировщик.

Этот этап важен: запись cron представляет собой обычный текст, но после установки она начинает влиять на систему. Отдельная подготовка выражения помогает продумать расписание до того, как вы превратите его в автоматизированную задачу.

Убедитесь, что вы находитесь в папке проекта:

cd ~/project

Создайте пустой файл с именем cron_syntax.txt:

touch cron_syntax.txt

Проверьте, что файл создан:

ls -l cron_syntax.txt

Запись синтаксиса ежедневного расписания

Ваша задача — составить выражение cron для задачи, которая должна запускаться «каждый день в 2:00».

Разберём пять полей для этого требования:

  1. Минута: нужно запустить задачу ровно в 2:00. Это 0-я минута. Значение: 0.
  2. Час: нужен час 2 ночи в 24-часовом формате. Значение: 2.
  3. День месяца: задача должна запускаться каждый день месяца. Значение: *.
  4. Месяц: задача должна запускаться каждый месяц года. Значение: *.
  5. День недели: задача должна запускаться независимо от дня недели. Значение: *.

После объединения полей выражение будет таким: 0 2 * * *.

Добавьте этот синтаксис в файл:

echo "0 2 * * *" >> cron_syntax.txt

Проверьте созданную запись:

cat cron_syntax.txt

Синтаксис 0 2 * * * сообщает системе: «Когда минута равна 0 И час равен 2, запустить команду».

Запомните следующую модель: cron сравнивает текущее время со всеми пятью полями. Когда текущее время соответствует шаблону, cron запускает задание.

Итоги

В этой лабораторной работе вы изучили основы планирования задач с помощью cron:

  1. Системная конфигурация: вы просмотрели /etc/crontab и увидели стандартную структуру.
  2. Структура полей: вы определили пять полей — минуту, час, день месяца, месяц и день недели.
  3. Запись выражений: вы успешно создали синтаксис для ежедневной задачи (0 2 * * *).

Понимание этого синтаксиса необходимо для автоматизации любых регулярных задач в среде Linux.