Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Учимся писать задания в Cron вручную и с помощью простых и удобных веб-инструментнов.

125К открытий136К показов
Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.

Введение

Шаблон задания для Cron выглядит примерно так:

			Минуты(0-59) Часы(0-24) День(1-31) Месяц(1-12) День недели(0-6) Команда
		

Вот иллюстрация этого же шаблона, которую можно сохранить себе:

Cron Jobs — пособие для начинающих 1

Звёздочками обозначены конкретные блоки времени.

Для отображения содержимого crontab-файла текущего пользователя используйте команду:

			$ crontab -l
		

Для редактирования заданий пользователя есть команда:

			$ crontab -e
		

Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:

			no crontab for sk - using an empty one

Select an editor. To change later, run 'select-editor'.
 1. /bin/nano <---- простейший
 2. /usr/bin/vim.basic
 3. /usr/bin/vim.tiny
 4. /bin/ed

Choose 1-4 [1]:
		

Выбирайте на своё усмотрение. Вот так изначально выглядит crontab-файл:

Cron Jobs — пособие для начинающих 2

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

Чтобы изменить crontab-файл другого пользователя (например, ostechnix):

			$ crontab -u ostechnix -e
		

Ниже приведены несколько примеров cron-заданий:

  1. Чтобы выполнять команду каждую минуту, задание должно быть такое:* * * * * <исполняемая-команда>
  2. Похожее задание, только команда будет вызываться каждые пять минут:*/5 * * * * <исполняемая-команда>
  3. Вызывать команду 4 раза в час (каждые 15 минут):*/15 * * * * <исполняемая-команда>
  4. Чтобы выполнить команду каждый час в 30 минут, пишем:30 * * * * <исполняемая-команда>Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).
  5. Значения времени можно комбинировать, перечислив их через запятую. Следующий код будет выполнять команду три раза в час: в 0, 5 и 10 минут.0,5,10 * * * * <исполняемая-команда>
  6. Выполнять команду каждый час будет следующее задание:0 * * * * <исполняемая-команда>
  7. Выполнение команды каждые два часа:0 */2 * * * <исполняемая-команда>
  8. Чтобы выполнять команду каждый день (в 00:00):0 0 * * * <исполняемая-команда>
  9. Выполнение команды каждый день в 03:00:0 3 * * * <исполняемая-команда>
  10. Выполнение команды каждое воскресенье (sunday):0 0 * * SUN <исполняемая-команда>
  11. Другой вариант задания, которое будет выполнять команду каждое воскресенье (естественно, тоже в 00:00):0 0 * * 0 <исполняемая-команда>
  12. Выполнение команды каждый день с понедельника по пятницу:0 0 * * 1-5 <исполняемая-команда>
  13. Следующее задание будет выполнять команду каждый месяц, 1-го числа в 00:00:0 0 1 * * <исполняемая-команда>
  14. Выполнять команду в 16:15 каждого первого числа месяца будет это задание:15 16 1 * * <исполняемая-команда>
  15. Выполнение команды каждые три месяца:0 0 1 */3 * <исполняемая-команда>
  16. Выполнение команды в строго определённое время и месяц:5 0 * 4 * <исполняемая-команда>
  17. Задание будет вызывать команду в начале каждого полугодия (в 00:00 1-го дня):0 0 1 */6 * <исполняемая-команда>
  18. Выполнение команды каждый год 1-го января в 00:00:0 0 1 1 * <исполняемая-команда>

Ещё существуют готовые задания:

  • @reboot — одиночное выполнение команды при загрузке;
  • @yearly — раз в год;
  • @annually — тоже раз в год;
  • @monthly — раз в месяц;
  • @weekly — один раз в неделю;
  • @daily —  раз в день;
  • @midnight — тоже раз в день;
  • @hourly — раз в час.

Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:

			@reboot <исполняемая-команда>
		

Команда для очистки всех заданий текущего пользователя:

			$ crontab -r
		

Чтобы узнать о подробностях, есть команда:

			$ man crontab
		

Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.

Синтаксис crontab-генераторов

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

Crontab.guru

crontab.guru — отличный сайт, чтобы изучить различные примеры cron-заданий. Просто введите данные и сайт самостоятельно сгенерирует конечное задание.

Cron Jobs — пособие для начинающих 3

На сайте есть разделы, посвящённые примерам и советам.

Crontag Generator

crontab-generator.org — ещё один сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой же: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.

Cron Jobs — пособие для начинающих 4

Вот такое конечное выражение вы увидете на сайте:

Cron Jobs — пособие для начинающих 5

Помимо этого, есть веб-инструмент «Crontab UI», который обеспечивает не только простоту создания crontab-заданий, но и безопасность. Вот статья, посвящённая этому инструменту.

Следите за новыми постами
Следите за новыми постами по любимым темам
125К открытий136К показов