Cron что это такое
Настройка Cron
Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.
Как работает Cron?
В этих папках должны находиться скрипты, которые нужно выполнять с указанным интервалом. Скрипты должны иметь права на выполнение и их имя не должно содержать точки. Это очень сильно облегчает работу с планировщиком для новых пользователей. Также в файле crontab прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в длительный период, например, раз в день, неделю, месяц, год.
Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.
Настройка Cron
Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:
Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становится причиной проблем.
Синтаксис crontab
Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:
минута час день месяц день_недели /путь/к/исполняемому/файлу
Примеры настройки cron
Далее, усложним, будем запускать каждый час, в нулевую минуту:
Запускаем в нулевую минуту нулевого часа, каждый день, это в 12 ночи:
0 0 * * * /usr/local/bin/serve
Если идти так дальше, то можно запускать в первый день каждого месяца:
0 0 1 * * /usr/local/bin/serve
Можно в любой день, например, 15 числа:
0 0 15 * * /usr/local/bin/serve
В первый день недели первого месяца года, 0 часов 0 минут:
0 0 * 1 0 /usr/local/bin/serve
Или в нулевой день недели каждого месяца:
0 0 * * 0 /usr/local/bin/serve
Вы можете выбрать любую минуту, час и день недели, например, 15.30 во вторник:
30 15 * * 2 /usr/local/bin/serve
30 15 * * sun /usr/local/bin/serve
Для того чтобы указать определенный интервал нужно использовать символ «-«, например, каждый час, с семи утра до семи вечера:
0 7-19 * * * /usr/local/bin/serve
Если нужно запустить команду несколько раз, можно использовать разделитель «,». Например, запустим скрипт в 5 и 35 минут пятого (16:05 и 16:35), каждый день:
5,35 16 * * * /usr/local/bin/serve
Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:
Например, вот так просто будет выглядеть команда запуска скрипта раз в час:
Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:
sudo vi /etc/corn.daily/basckup
Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.
Отладка работы
После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:
Она должна выполняться в 19.40 каждый день, теперь смотрим лог:
grep CRON /var/log/syslog
И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.
Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:
sudo run-paths /etc/cron.daily/
Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.
Выводы
В этой статье мы рассмотрели как выполняется настройка cron для удобного планирования автоматических задач. Надеюсь, эта информация была полезной для вас.
Cron Job: Полное Руководство для Начинающих 2021
Чем бы вы не занимались, практически всегда есть возможность работать более эффективно. Так, например, занятые веб-специалисты нашли способ автоматизировать некоторые процессы, чтобы не тратить своё время на обработку повторяющихся задач. Одним из таких способов является cron job, или запланированные задания cron, доступные пользователям Unix-подобных операционных систем.
В этой статье мы расскажем об основах cron jobs, или как работают запланированные (отложенные) задачи.
Сэкономьте до 77%, ознакомьтесь с VPS-планами Hostinger!
Cron и Cron Job: Основы
Создавать и редактировать cron-задания можно разными способами. В этом руководстве мы покажем вам, как это делать с помощью командной строки Linux (терминала).
Если у вас есть свой VPS в Hostinger, ваши учётные данные для входа находятся во вкладке управления VPS. Подключитесь к вашему серверу по SSH. Если что-то не получается, ознакомьтесь с нашим руководством по PuTTY SSH.
Вот некоторые основные операции с cron:
Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду:
Вот, как будет выглядеть результат.
Скорее всего вы попадёте в редактор vi. Так как этот редактор довольно часто используется при работе с cron, лучше ознакомится с основными командами vi. Так вы будете чувствовать себя более уверенно.
Если вы хотите удалить текущий файл crontab текущего пользователя, введите следующую команду:
Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду:
Теперь, когда вы ознакомились с базовыми операциями, пора рассмотреть основной синтаксис cron.
По сути, crontab-файл состоит из двух частей: таймера расписания и команды. Вот как записывается команда:
Давайте углубимся в некоторые детали.
Как Правильно Написать Синтаксис Cron
Crontab-файл имеет пять полей. Каждое поле представлено звёздочкой и определяет дату и время задачи, которая должна выполняться повторно.
Кроме того, важно использовать правильные символы.
Cron: Примеры
Теперь, когда вы ознакомились с синтаксисом cron, мы дадим больше примеров, которые помогут вам лучше понять изложенные выше правила.
Прежде чем двигаться дальше, обратите внимание, что вывод команды будет автоматически отправлен на вашу локальную электронную почту. Если вы не хотите получать эти письма, просто добавьте к синтаксису >/dev/null 2>&1, как показано в примере:
Если вы хотите, чтобы вывод приходил на другую почту, вы можете добавить MAILTO, а затем адрес электронной почты. Например:
Больше примеров синтаксиса:
Выражение | Значение |
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 | Выполнить команду в первый день каждого месяца. |
Разрешения Cron
Для cron-заданий важны два файла.
Что Такое Cron Job?
Cron — это утилита для планирования повторяющихся заданий. Отложенное/запланированное задание — это и есть cron job.
Если вы просто хотите запланировать задачу, чтобы она выполнилась один раз, но позже, тогда вам нужно использовать другую команду. Если же речь идёт о повторяющихся задачах, то cron — необходимое вам решение.
Cron — демон, а это означает, что он работает в фоновом режиме для выполнения не интерактивных заданий. В Windows примером фоновых процессов являются Службы.
Демон всегда находится в состоянии бездействия и ожидает, когда команда попросит его выполнить определённую задачу — либо на текущем компьютере, либо на другой любой машине в сети.
Файл cron — это простой текстовый файл, который содержит команды для запуска в определённое время. Системный файл crontab по умолчанию — /etc/crontab, он находится в каталоге crontab /etc/cron.*/. Только системные администраторы могут редактировать системный crontab-файл.
Однако, поскольку Unix-подобные операционные системы поддерживают несколько пользователей, каждый из них может создать свой собственный crontab-файл и запускать команды в любое время. Демон cron проверяет файл и запускает команды в фоновом режиме.
С помощью cron-заданий вы можете автоматизировать обслуживание системы, мониторинг дискового пространства и выполнение резервного копирования. По своей природе cron-задачи отлично подходят для компьютера, который должен работать круглосуточно, то есть для сервера.
Обратите внимание, что хотя cron в основном используют системные администраторы, веб-разработчикам тоже может пригодиться этот замечательный инструмент. Например, cron можно использовать, чтобы деактивировать просроченные учётные записи, проверять неработающие ссылки или даже рассылать новостные письма целевой аудитории.
Выводы
Автоматизация повторяющихся задач не только поможет вам работать более эффективно, но и вовремя выполнять все необходимые действия.
Cron job — отличный способ управления повседневными задачами, который подойдёт как системным администраторам, так и другим веб-специалистам, включая разработчиков. Всё, что вам нужно сделать, это использовать правильную команду и выбрать правильное время для её выполнения.
Вот некоторые из основных команд:
А теперь пришло время попрактиковаться и заставить cron работать на вас!
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Cron Jobs — пособие для начинающих
Авторизуйтесь
Cron Jobs — пособие для начинающих
Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.
Введение
Шаблон задания для Cron выглядит примерно так:
Вот иллюстрация этого же шаблона, которую можно сохранить себе:
Звёздочками обозначены конкретные блоки времени.
Для отображения содержимого crontab-файла текущего пользователя используйте команду:
Для редактирования заданий пользователя есть команда:
Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:
Выбирайте на своё усмотрение. Вот так изначально выглядит crontab-файл:
В этом файле как раз нужно перечислять одну за другой все команды.
Чтобы изменить crontab-файл другого пользователя (например, ostechnix):
Ниже приведены несколько примеров cron-заданий:
Ещё существуют готовые задания:
Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:
Команда для очистки всех заданий текущего пользователя:
Чтобы узнать о подробностях, есть команда:
Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.
Синтаксис crontab-генераторов
Процесс написания заданий сильно упрощают веб-инструменты. Они не требуют знаний синтаксиса Cron, потому что у них графический интерфейс, а задания генерируются в соответствии с вводимыми данными. Сайт генерирует задание, которое можно будет просто скопировать и вставить в crontab-файл.
Crontab.guru
crontab.guru — отличный сайт, чтобы изучить различные примеры cron-заданий. Просто введите данные и сайт самостоятельно сгенерирует конечное задание.
На сайте есть разделы, посвящённые примерам и советам.
Crontag Generator
crontab-generator.org — ещё один сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой же: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.
Сайт Crontab Generator
Вот такое конечное выражение вы увидете на сайте:
Помимо этого, есть веб-инструмент «Crontab UI», который обеспечивает не только простоту создания crontab-заданий, но и безопасность. Вот статья, посвящённая этому инструменту.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Время планировать задачи
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Например, вы можете установить задание cron для автоматизации повторяющихся задач, таких как резервное копирование баз данных или данных, обновление системы последними обновлениями безопасности, проверка использования дискового пространства, отправка электронных писем, перезагрузка сервера и так далее. В некоторых приложениях, таких как Drupal или Magento, для выполнения определенных задач требуются задания cron.
Задания cron могут быть запланированы по минуте, часу, дню месяца, месяцу, дню недели или любой их комбинации.
Про Linux за 5 минут
Что такое файл Crontab
Crontab (таблица cron) представляет собой текстовый файл, который определяет расписание заданий cron. Существует два типа файлов crontab. Общесистемные файлы crontab и отдельные пользовательские файлы crontab.
/etc/crontab и файлы в каталоге /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.
В большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron.
Синтаксис Crontab и операторы
Каждая строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которым следует команда для запуска.
Первые пять полей могут содержать одно или несколько значений, разделенных запятой или диапазон значений, разделенных дефисом.
Общесистемные файлы Crontab
Предопределенные макросы
Существует несколько специальных макросов расписания Cron, используемых для определения общих интервалов. Вы можете использовать эти ярлыки вместо указания даты в пять столбцов.
Команда Crontab
Команда crontab позволяет установить или открыть файл crontab для редактирования. Вы можете использовать команду crontab для просмотра, добавления, удаления или изменения заданий cron, используя следующие параметры:
Переменные Crontab
Демон cron автоматически устанавливает несколько переменных окружения.
Ограничения Crontab
Примеры Cron заданий
Ниже приведены некоторые примеры заданий cron, которые покажут вам, как запланировать выполнение задачи на разные периоды времени.
Использование Cron для автоматизации задач в Ubuntu 18.04
By Mark Drake and Shaun Lewis
Published on February 20, 2020
Предыдущая версия данного обучающего руководства была написана Шоном Льюисом.
Введение
Cron — это хронологический демон-планировщик задач, работающий в операционных системах типа Unix, включая дистрибутивы Linux. Cron запускается в фоновом режиме, а задачи, запланированные в cron и именуемые «задачи cron», выполняются автоматически, что делает cron полезным для автоматизации связанных с обслуживанием задач.
В этом обучающем руководстве вы познакомитесь с тем, как планировать задачи с помощью специального синтаксиса cron. Также мы рассмотрим несколько комбинаций клавиш, которые вы можете использовать при создании расписаний задач, чтобы их проще было писать и понимать.
Предварительные требования
Для выполнения этого обучающего руководства вам потребуется доступ к компьютеру с Ubuntu 18.04. Это может быть ваш локальный компьютер, виртуальная машина или виртуальный приватный сервер.
Независимо от того, какой компьютер вы используете для выполнения этого обучающего руководства, у вас должен быть пользователь без привилегий root с настроенными правами администратора. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера Ubuntu 18.04.
Установка cron
Почти все дистрибутивы Linux имеют ту или иную форму cron, установленную по умолчанию. Но если вы используете компьютер Ubuntu, где cron не установлен, вы можете установить его с помощью APT.
Перед установкой cron на компьютер Ubuntu обновите локальный индекс пакетов компьютера:
Затем выполните установку cron с помощью следующей команды:
Вам также нужно убедиться, что он настроен для работы в фоновом режиме:
После этого cron будет установлен в системе, а вы сможете начать составлять расписание задач.
Как работает Cron
Чтобы запланировать задачу, вам нужно открыть ваш файл crontab для редактирования и добавления задачи, написанной в форме выражения cron. Синтаксис выражений cron можно разбить на два элемента: расписание и команда для запуска.
Команда может быть практически любой командой, которую вы можете запустить в командной строке. Компонент расписания в синтаксисе разбит на 5 разных полей, которые расположены в следующем порядке:
Поле | Допустимые значения |
---|---|
минута | 0–59 |
час | 0–23 |
День месяца | 1–31 |
месяц | 1–12 или ЯНВ–ДЕК |
День недели | 0–6 или ПНД–ВСК |
Все вместе задачи, запланированные в crontab, выглядят следующим образом:
Ниже представлен функциональный пример выражения cron. Это выражение запускает команду curl http://www.google.com каждый вторник в 17:30:
Также существует несколько специальных символов, которые вы можете включить в компонент расписания выражения cron, что упрощает создание расписания:
Ниже представлено несколько примеров использования компонента расписания cron:
Если вы найдете что-то из этого затруднительным или вам потребуется помощь при написании расписания для ваших собственных задач cron, Cronitor предоставляет удобный редактор выражений cron, который называется Crontab Guru и который вы можете использовать для проверки действительности ваших расписаний cron.
Управление файлами crontab
После настройки расписания и определения задания, которое нужно запустить, вам нужно будет поместить его в место, где ваш демон сможет его прочитать.
Вы можете изменить файл crontab с помощью следующей команды:
Если вы впервые запускаете команду crontab в этом профиле пользователя, вы сможете выбрать используемый по умолчанию текстовый редактор для использования при редактировании crontab:
После выбора вы попадете в новый файл crontab, содержащий ряд закомментированных инструкций по его использованию:
Если вы хотите просмотреть содержимое файла crontab, не изменяя его, вы можете использовать следующую команду:
Вы можете стереть файл crontab с помощью следующей команды:
Предупреждение. Следующая команда не будет запрашивать подтверждение того, что вы хотите стереть ваш файл crontab. Используйте ее, если вы уверены, что хотите стереть его.
Управление выводом задачи cron
Поскольку задачи cron выполняются в фоновом режиме, не всегда очевидно, что они были запущены успешно. Теперь, когда вы знаете, как использовать команду crontab и как запланировать задачу cron, вы можете начать экспериментировать с различными способами перенаправления результатов выполнения задач cron, чтобы помочь вам отследить их успешное выполнение.
Если у вас есть агент передачи почты, например, Sendmail, который установлен и настроен на сервере, вы можете отправить результат выполнения задачи cron на электронный адрес, связанный с вашим профилем пользователя Linux. Также вы можете вручную задать адрес электронной почты, указав параметр MAILTO вверху crontab.
Также вы можете перенаправить вывод задачи cron в файл журнала или в пустую директорию, чтобы не получать электронное сообщение с выводом.
Чтобы добавить вывод запланированной команды в файл журнала, добавьте >> в конец команды, после чего укажите имя и расположение файла журнала, как показано здесь:
Ограничение доступа
Например, чтобы запретить доступ для всех пользователей, а затем предоставить доступ пользователю ishmael, вы можете использовать следующую последовательность команд:
Специальный синтаксис
Существует также несколько коротких команд, которые вы можете использовать в файле crontab, чтобы упростить процесс создания расписания задач. Они являются эквивалентом для указанных примеров числового расписания:
Сокращение | Краткая запись для |
---|---|
@hourly | 0 * * * * |
@daily | 0 0 * * * |
@weekly | 0 0 * * 0 |
@monthly | 0 0 1 * * |
@yearly | 0 0 1 1 * |
Примечание. Не все демоны cron могут понимать этот синтаксис (в частности, более ранние версии), поэтому рекомендуем убедиться в этом, прежде чем широко использовать подобный синтаксис.
Кроме того, краткая запись @reboot будет запускать любую команду, которая следует за ней при каждом запуске сервера:
Использование этих комбинаций при возможности поможет понимать расписание задач в вашем файле crontab.
Заключение
Cron — это гибкая и мощная утилита, которая позволяет снизить количество ресурсов, затрачиваемых на администрирование системы. Используя cron вместе со скриптами оболочки, вы можете автоматизировать задачи, которые обычно вызывают затруднения. Например, вы можете написать скрипт оболочки для отправки резервных копий данных решению хранилища объектов и затем автоматизировать его с помощью cron.