Администрирование
...
Фоновые задачи
Настройка Cron для Linux

Основные сведения о Cron

9min

Некоторые основные операции с cron:

Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду:

Shell


Так будет выглядеть результат.

Document image


Скорее всего вы попадёте в редактор vi. Так как этот редактор довольно часто используется при работе с cron, лучше ознакомится с основными командами vi. Так вы будете чувствовать себя более уверенно.

Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e. Имейте в виду, что вы можете редактировать чужие файлы только как суперпользователь, то есть вам нужно ввести sudo su перед командой.

Document image


Если вы хотите удалить текущий файл crontab текущего пользователя, введите следующую команду:

Shell


Команда ниже делает то же самое, что и -r, однако она просит подтвердить действие, прежде чем удалить crontab:

Shell


Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду:

Shell


Ещё одна операция этой команды позволяет посмотреть есть ли у вас crontab-файлы. Просто введите crontab -l. Если у вас нет созданных файлов, вывод покажет следующий результат:

Document image


Если вы хотите просмотреть списки crontab-файлов других пользователей, просто введите crontab -u username -l как суперпользователь.

Document image


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

По сути, crontab-файл состоит из двух частей: таймера расписания и команды. Вот как записывается команда:

Shell

  • * * * * /bin/sh backup.sh — cron job значит запуск резервного копирования каждую минуту.
  • 30 18 * * * rm /home/sydtesting/tmp/* означает, что файлы tmp будут удаляться из /home/sydtesting/tmp каждый день в 18:30.

Давайте углубимся в некоторые детали.

Как правильно написать синтаксис Cron

Crontab-файл имеет пять полей. Каждое поле представлено звёздочкой и определяет дату и время задачи, которая должна выполняться повторно.

Document image

  • Минуты — минута часа, в которую будет запущена команда, указывается в диапазоне от 0 до 59.
  • Часы — час, когда начнётся выполнение команды, в диапазоне от 0 до 23.
  • День месяца — в какой день месяца вы хотите запускать команду, в диапазоне от 1 до 31.
  • Месяц — в какой месяц будет выполняться указанная команда, в диапазоне от 1 до 12.
  • День недели — в какой день недели вы хотите выполнять команду, в диапазоне от 0 до 6 (воскресенье — 0).

Кроме того, важно использовать правильные символы.

  • Звёздочка (*) — чтобы определить параметры планирования.
  • Запятая (,) — чтобы указать два или больше вариантов времени выполнения одной и той же команды.
  • Дефис (-) — чтобы задать диапазон времени выполнения одной команды.
  • Косая черта (/) — для создания заданных интервалов времени в определённом диапазоне.
  • Last (L) — для конкретной цели, чтобы определить последний день недели в данном месяце. Например, 3L означает последнюю среду.
  • Рабочий день (W) — в табах числа и месяца, мы также можем использовать этот символ, чтобы определить ближайший рабочий день недели к заданному времени. Например, 1W означает, что скрипт будет запущен в ближайший рабочий день к первому числу, если 1-ое — Воскресенье, команда будет выполняться в понедельник (2-го).
  • Решетка (#) — чтобы указать день недели в месяце, даёт возможность выбрать цифру в диапазоне от 1 до 5. Например, 1#2 означает второй понедельник.
  • Вопросительный знак (?) — например, чтобы выбрать определённый день для запуска скрипта, нам нужно указать либо число месяца, либо номер дня, мы не можем указывать оба значения одновременно. Вопросительный знак даёт возможность оставить одно значение пустым.

Примеры

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

Прежде чем двигаться дальше, обратите внимание, что вывод команды будет автоматически отправлен на вашу локальную электронную почту. Если вы не хотите получать эти письма, просто добавьте к синтаксису >/dev/null 2>&1, как показано в примере:

Shell


Если вы хотите, чтобы вывод приходил на другую почту, вы можете добавить MAILTO, а затем адрес электронной почты. Например:

Shell


Больше примеров синтаксиса:

Аа Выражение

Значение

0 0 * * * /bin/sh backup.sh

Выполнять резервное копирование базы данных в полночь один раз в день.

0 6,18 * * * /bin/sh backup.sh

Выполнять резервное копирование БД два раза в день в 6 утра и 6 вечера.

0 */6 * * * /scripts/monitor.sh

Проводить мониторинг каждые шесть часов.

*/10 * * * * /home/user/script.sh

Выполнять cron job для файла сценария, находящегося в домашнем каталоге, каждые 10 минут.

0 * 20 7 * /bin/sh backup.sh

Запускать резервное копирование базы данных каждый час каждого 20 июля.

0 0 * * 2 * /bin/sh

Запускать резервное копирование БД в полночь каждый вторник.

* * * 1,2,5 *  /script/script.sh

Выполнить команду в январе, феврале и мае.

10-59/5 5 * * * /home/user/script.sh

Выполнять команду каждые 5 минут в 5 часов утра, начиная с 5:10 утра.

0 8 1 */3 * /home/user/script.sh

Запускать команду ежеквартально в 1-й день в 8 утра.

* * * * * /scripts/script.sh; /scripts/scrit2.sh

Чтобы запланировать несколько заданий в одном cron job.

@reboot /scripts/script.sh

Чтобы выполнять определённую задачу каждый раз при запуске системы.

0 0 1 * *  /home/user/script.sh

Выполнить команду в первый день каждого месяца.