Как сделать задачу cron

Crontab Примеры: Запуск Cron Заданий в Linux

В Linux мы можем настраивать выполнение регулярной задачи, также известной как cron задание, с помощью сервиса cron ( crond ).

Сервис cron ( crond ), читает crontab (таблицы cron-а) и выполняет запланированные задания.

В данной статье я покажу формат crontab и объясню как планировать запуск команд или скриптов в Linux.

Первым делом необходимо убедиться, что сервис cron ( crond ) запущен.

Узнать запущен ли сервис cron в Ubuntu:

Узнать запущен ли сервис crond в CentOS:

Также необходимо убедиться в том, что сервис cron ( crond ) будет запущен при старте системы.

Дельный Совет: Не знаете как добавит сервис в автозагрузку в Ubuntu или CentOS? Это легко! Читать далее →

Как только сервис cron ( crond ) запущен и стоит в автозагрузке — вы можете запланировать cron задание.

Настройка Crontab

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

Открыть crontab пользователя Alice:

Просмотреть содержимое crontab текущего пользователя и пользователя Alice:

Формат Планирования Заданий в Сrontab

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

Схема для лучшего понимания формата crontab :

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

Примеры временных меток для колонки час:

ЗначениеТипОписание
9Целое значениеВыполнять в 9am
6,7,10Несколько значенийВыполнять в 6, 7 и 10am
6-9ДиапазонВыполнять каждый час между 6-9 AM (включительно)
*/2ДробьВыполнять каждый 2-ой час, т.е. 0 (полночь), 2am, 4am, 6am, и т.д.
3-12/3Дробный диапазономВыполнять каждый 3-ий час между 3am и 12pm, т.е. 3am, 6am, 9am, 12pm

Дельный Совет: Хотите стать DevOps инженером? Тогда вы обязаны знать Git! Это статья поможет реально быстро освоить основы Git! Читать далее →

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

ЗначениеОписаниеЭквивалент
@rebootВыполнять при загрузке операционной системы
@yearlyВыполнять ежегодно в полночь 1-го января0 0 1 1 *
@annuallyВыполнять ежегодно в полночь 1-го января0 0 1 1 *
@monthlyВыполнять ежемесячно в полночь 1-го числа0 0 1 * *
@weeklyВыполнять в полночь каждый понедельник0 0 * * 0
@dailyВыполнять ежедневно в полночь0 0 * * *
@midnightВыполнять ежедневно в полночь0 0 * * *
@hourlyВыполнять в начале каждого часа0 * * * *

Примеры Crontab

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

Эта таблица мне очень помогает и надеюсь поможет вам.

Вот самые распространенные примеры расписаний cron заданий, которые могут быть найдены практически в любом crontab в Linux:

Источник

Как добавить команду в Cron

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

Как посмотреть задания cron

Думаю, что начать следует не с настройки, а именно как посмотреть уже настроенные задачи cron. На самом деле задачи хранятся в трёх местах:

Чтобы посмотреть задания cron добавленные текущим пользователем используйте команду crontab и опцию -l:

А теперь давайте поговорим о том, как добавить команду cron для нужного вам пользователя.

Добавление команды в cron

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

Все запланированные действия будут выполнятся от текущего пользователя, если вы хотите указать другого пользователя используйте опцию -u:

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

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Каждая задача формируется следующим образом:

минута(0-59) час(0-23) день(1-31) месяц(1-12) день_недели(0-7) /полный/путь/к/команде

Чтобы подставить любое значение используйте звездочку «*«. Первые пять параметров характеризуют время выполнения, а последний, это путь к команде или скрипту, который нужно выполнить. Обратите внимание, что значение переменной PATH здесь не действует, поэтому путь надо писать полностью либо объявлять свою переменную PATH в начале файла настройки. Давайте сделаем простой скрипт, который будет выводить в лог дату своего запуска и поможет отладить всё это:

sudo vi /usr/local/bin/script.sh

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Сделайте скрипт исполняемым:

sudo chmod ugo+x /usr/local/bin/script.sh

Самый простой пример как запускать cron каждую минуту. Вместо всех параметров ставим просто звездочку:

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Или только в нулевую минуту, то есть в начале каждого часа или другими словами запуск cron каждый час:

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

Можно записывать значения через дефис чтобы указывать промежутки точек запуска. Например, для того чтобы запускать скрипт каждую минуту, но только первые 10 минут каждого часа используйте:

Чтобы чтобы настроить интервал выполнения более тонко можно использовать слеш (/) с помощью этого символа и звездочки можно указать шаг с которым будет выполнятся команда. Например, каждые пять минут:

Чтобы запустить cron каждые 10 минут используйте:

А для запуска cron каждые 30 минут:

Аналогичным образом задаются часы, например, выполнять скрипт только 6:00 и 18:00:

0 6,18 * * * /usr/local/bin/script.sh

А вот запустить cron каждую секунду или раз в 30 секунд не получится. Минимальная единица времени в cron это минута. Но можно создать команду, которая будет запускаться раз в минуту и по 30 секунд спать и затем снова делать:

* * * * * /usr/local/bin/script.sh && sleep 30 && /usr/local/bin/script.sh

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

Для подбора правильной комбинации даты можно использовать сервис crontab.guru. Он позволяет в реальном времени посмотреть когда будет выполнено то или иное условие:

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Когда настройка cron linux будет завершена, сохраните изменения и закройте файл. Для этого в Nano нажмите Ctrl+O для сохранения и Ctrl+X для закрытия редактора, а в Vim нажмите Esc и наберите :wq. Теперь новые задания Cron будут добавлены и активированы. Посмотреть как выполняется ваш Cron вы можете с помощью скрипта, который я привел выше либо в лог файле. Сервис cron пишет свои логи в стандартный журнал syslog. В Ubuntu они сохраняются в файле /var/log/syslog:

cat /var/log/syslog | grep CRON

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Если во время работы возникнут ошибки cron, они тоже будут здесь. Если же вам надо добавить задание Cron из какого либо скрипта, то вы всегда можете поместить свой скрипт в папку /etc/cron.d или /cron/hourly. чтобы выполнять его когда надо, только не забудьте сделать скрипт исполняемым.

Выводы

В этой статье мы разобрались как выполняется настройка cron linux на примере Ubuntu. Как видите, все только кажется сложным, но на самом деле просто если разобраться.

Источник

Настройка Cron

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

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

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

Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.

Настройка Cron

Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:

Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становиться причиной проблем.

Синтаксис crontab

Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:

минута час день месяц день_недели /путь/к/исполняемому/файлу

Примеры настройки cron

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу 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

Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:

Например, вот так просто будет выглядеть команда запуска скрипта раз в час:

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

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

sudo vi /etc/corn.daily/basckup

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

Отладка работы

После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Она должна выполняться в 19.40 каждый день, теперь смотрим лог:

grep CRON /var/log/syslog

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.

Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:

sudo run-paths /etc/cron.daily/

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

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

Выводы

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

Источник

Как сделать задачу cron

Примеры таких заданий:

Настройка задач Cron через панели управления хостингом

На виртуальном хостинге вы можете управлять задачами в Cron через специальный web-интерфейс.

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

Соответствующий раздел в панелях управления может называться “Cron”, “Crontab” или “Планировщик”. Например, так выглядит настройка Cron у провайдера Timeweb.

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

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

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Через web-интерфейс панели управления даже неопытный пользователь хостинга сможет настроить выполнение необходимых команд, согласно нужному ему расписанию.

Аналогично средства управления задачами Cron встроены в популярные панели управления сервером ISPmanager и cPanel, которые можно установить на VPS/VDS или на выделенный сервер.

ISPmanager

1. В ISPmanager задачи Cron создаются через раздел “Планировщик”.

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

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

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

3. Для опытных пользователей предназначен экспертный режим, когда настройки времени исполнения задания делаются так же, как и при редактировании команд Cron вручную.

О редактировании Cron через командную строку читайте ниже.

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

cPanel

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

2. При редактировании задач в Cron вы можете настроить время исполнения задачи и указать название команды.

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Некоторые провайдеры позволяют пользователям виртуального хостинга подключаться к серверу по протоколу SSH и получать доступ к командной строке.

В этом случае для управления задачами в Cron вручную вы можете использовать команду:

Такая же возможность есть и у владельцев VPS/VDS и выделенных серверов.

Редактирование Cron через командную строку

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

Любой пользователь VPS/VDS и выделенных серверов на Linux может самостоятельно добавить задание в Cron с помощью специальной команды сrontab.

При запуске crontab открывается редактор текстового файла с уже имеющимися задачами Cron.

Для новой задачи добавьте строку в этот файл и сохраните его.

Каждый день очищать каталог временных файлов
0 3 * * rm /home/tmp/

Пример: редактирование заданий Cron с помощью команды crontab

Запускать задачи в Cron можно с точностью до одной минуты.

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

1. Чтобы включить запись логов в Cron:

3. Сделайте рестарт rsyslog:

Формат записей в Cron

Задания, которые нужно выполнить, описываются в Cron с помощью строк определенного формата.

Каждая строка содержит информацию:

Под командой подразумевается название скрипта в файловой системе Linux.

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

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

1. Минуты (от 0 до 59).
2. Часы (от 0 до 23).
3. Дни месяца (от 1 до 31).
4. Месяц (от 1 до 12).
5. Дни недели (от 0 до 6, начиная с воскресенья).

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

Как сделать задачу cron. Смотреть фото Как сделать задачу cron. Смотреть картинку Как сделать задачу cron. Картинка про Как сделать задачу cron. Фото Как сделать задачу cron

Если вместо цифр в каком-то из полей указывается символ звездочки “*”, то это означает подстановку всех возможных значений. Например, “*” в поле “день месяца” означает, что команда запускается каждый день.

В полях можно использовать символы:

Например, значение “5,10,19” в поле “часы” означает, что команда будет запускаться в 5 часов, в 10 часов и в 19 часов.

Значение “0-5” в поле “дни недели” означает, что команда будет запускаться каждый день, кроме субботы.

Пример записи в Cron

Данная запись означает, что команда “/home/admin/backup” будет запускаться каждый день в 8 часов 30 минут.

Необходимо помнить, что время запуска команд привязано к установленному на сервере времени и часовому поясу. Используемый на сервере часовой пояс (timezone) можно выяснить у технической поддержки хостинга или с помощью команды date из командной строки сервера.

Нюансы и полезные советы при работе с Cron

Команды, которые настраиваются через Cron, запускаются и работают на сервере провайдера от имени конкретного пользователя.

Если нужно, чтобы по расписанию открывалась некая страница сайта и исполнялся определенный скрипт, который привязан к ней, то необходимо обеспечить обращение к этой странице по протоколу HTTP (HTTPS) так же, как это происходит при использовании браузера.

Для этой цели на всех серверах хостинга в комплекте программного обеспечения имеется специальная утилита wget, которая умеет обращаться к страницам сайтов по протоколам HTTP и HTTPS. Например, для того, чтобы запускать раз в сутки в три часа ночи запрос по протоколу HTTP-страницы, расположенной по адресу http://mysite.ru/cron, нужно прописать в CRON следующее:

Другой распространенный вопрос связан с использованием интерпретатора языка программирования PHP для запуска скриптов. Предположим, что скрипты, предназначенные для запуска через Cron, уже готовы и расположены внутри каталога с сайтом в папке scripts.

Уточните у технической поддержки хостинга полный путь, по которому располагается на сервере хостинга бинарный файл интерпретатора PHP. Обычно этот путь имеет вид, наподобие /usr/bin/php или /usr/local/bin/php.

Также выясните полный путь к корневому каталогу сайта. Эта информацию можно узнать в панели управления хостингом или у технической поддержки. Допустим, полный путь выглядит как “/home/user/www/mysite.ru/”.

Теперь, имея всю необходимую информацию о расположении файлов и папок, можно настроить запуск скрипта “myscript.php” cron в виде такой строки.

0 3 * * * /usr/bin/php /home/user/www/mysite.ru/scripts/myscript.php

Как правило, при работе скриптов через Cron любая выводимая ими информация считается важной и перенаправляется владельцу сайта на его электронную почту. Для того, чтобы запретить работающим через Cron скриптам выводить во время работы любые сообщения, следует добавить в конце строки специальный набор символов-операторов: “>/dev/null 2>&1”. Это выключает любые сообщения от скриптов, в том числе информацию об ошибках.

0 3 * * * /home/user/www/mysite.ru/scripts/myscript >/dev/null 2>&1

Пример настройки Cron с отключением вывода об ошибках

Выводы

Планировщик Cron используется в операционной системе Linux для управления выполнением задач по расписанию.

Для владельцев виртуальных и выделенных серверов доступна возможность настраивать записи Cron вручную из командной строки сервера с помощью команды crontab.

Источник

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

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