Что такое Cron Job и как вы их используете? – CloudSavvy IT

Часы и время
Татьяна Юрченко / Shutterstock

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

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

Как работает Cron?

Задания Cron определяются в файле, называемом кронтаб. Этот файл уникален для каждого пользователя, и хотя он обычно находится под /var/spool/cron/crontabsони не предназначены для непосредственного редактирования. Вместо этого вы редактируете их через crontab команда:

crontab -e

Это откроет crontab вашего пользователя в текстовом редакторе CLI по умолчанию. Если это застряло в vim, вы можете изменить редактор по умолчанию, запустив select-editor в некоторых системах или путем добавления export VISUAL=micro; на ваш ~/.bashrc (или эквивалент оболочки).

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

По умолчанию ваш crontab скорее всего пуст, поэтому вам придется добавлять задания вручную. Задание cron обычно форматируется как:

minute hour day month weekday  

Команда для выполнения может быть любой, включая сценарии оболочки

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

15 * * * * command

Это будет выполняться с 15-й минуты каждого часа, каждый день, каждый месяц, независимо от дня недели.

Если вы хотите запускать работу в 17:30 каждую пятницу, вы должны использовать:

30 17 * * 5 command

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

0 9-17 * * 1-5 command

С 9 утра до 5 вечера, с понедельника по пятницу. Точно так же вы можете определить список значений, разделяя их запятыми.

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

0 */2 * * * command

Имейте в виду, что часы начинаются в полночь, 00:00. Ваша работа будет выполняться один раз, затем в 2 часа ночи, затем в 4 часа утра и так далее.

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

Если вы хотите простой способ отладки cron синтаксис, есть много онлайн-редакторов, таких как crontab.guru это покажет вам, что означает ваше расписание выражения с точки зрения непрофессионала, т.е. «В минута 0 мимо каждого второго часа«.

Убедиться, что Cron работает

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

* * * * * echo "test" >> logfile 2>&1

>> оператор добавляет вывод в файл, а 2>&1 Оператор обязательно включает stderr в вывод. Эквивалент Bash будет просто &>> вместо >>, но это может не сработать на каждом дистрибутиве, так как cron использует /bin/sh по умолчанию.

Cron можно настроить для отправки электронных писем с выводом заданий. На самом деле он делает это по умолчанию с адресом электронной почты по умолчанию для вашей учетной записи, но, вероятно, он не настроен должным образом. Чтобы электронная почта работала, вам понадобится почтовый агент, настроенный и настроенный на вашем сервере, который позволит вам использовать mail Команда для отправки писем. Затем поместите эту строку над заданиями в cron в задании cron:

MAILTO="yourname@gmail.com"

Теперь любой вывод из любой работы, которая идет в stdout (например, она не куда-то отправлена) будет отправлена ​​через mail по указанному вами адресу. Вы можете проверить это, добавив временное задание в echo к stdout каждую минуту:

* * * * * echo "cron mail is working!"

Просто убедитесь, что выключили эту работу, как только она заработает, иначе она очень быстро станет раздражать.

Cron использует / bin / sh по умолчанию, а не Bash

Вы можете использовать другую оболочку, чем то, что cron работает в. Bash (/bin/bash) является обычной оболочкой в ​​большинстве дистрибутивов и является реализацией sh. /bin/sh файл является символическая ссылка на sh реализация, но это не всегда bash. В системах на основе Debian, таких как Ubuntu, и в MacOS, /bin/sh ссылки на dash по умолчанию.

Конечным результатом этой путаницы является то, что ваши сценарии могут не выполняться одинаково, а переменная PATH (среди прочих) может быть неправильно настроена. Вы можете обойти это несколькими способами, и вариант вашего дистрибутива cron может работать по-другому, поэтому вам, возможно, придется попробовать пару:

  • Добавление SHELL=/bin/bash к вершине вашего crontab. Вы также можете добавить BASH_ENV="/root/.bashrc" для этого, чтобы прочитать ваш профиль Bash.
  • Ввод /bin/bash перед командой в каждой работе. Возможно, вам придется установить BASH_ENV переменная, даже если вы не переключаетесь на глобально.
  • Использование Баш Шебанга #!/bin/bash в верхней части каждого сценария. Это требует, чтобы у вас было каждое задание в отдельном файле сценария.

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

Обновление вашего Crontab вручную

Если вы не хотите управлять своим crontab через crontab -eесть лучший метод, который вы можете использовать. Команда crontab -l отобразит содержимое вашего crontab, и вы можете передать это в файл:

crontab -l > my_crontab

Затем загрузите этот файл в другую систему и «установите» его:

crontab my_crontab

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *