задания cron что это

Настройка 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 Job: Полное Руководство для Начинающих 2021

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

Чем бы вы не занимались, практически всегда есть возможность работать более эффективно. Так, например, занятые веб-специалисты нашли способ автоматизировать некоторые процессы, чтобы не тратить своё время на обработку повторяющихся задач. Одним из таких способов является cron job, или запланированные задания cron, доступные пользователям Unix-подобных операционных систем.

В этой статье мы расскажем об основах cron jobs, или как работают запланированные (отложенные) задачи.

Сэкономьте до 77%, ознакомьтесь с VPS-планами Hostinger!

Cron и Cron Job: Основы

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

Если у вас есть свой VPS в Hostinger, ваши учётные данные для входа находятся во вкладке управления VPS. Подключитесь к вашему серверу по SSH. Если что-то не получается, ознакомьтесь с нашим руководством по PuTTY SSH.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 для автоматизации задач в 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, чтобы упростить процесс создания расписания задач. Они являются эквивалентом для указанных примеров числового расписания:

СокращениеКраткая запись для
@hourly0 * * * *
@daily0 0 * * *
@weekly0 0 * * 0
@monthly0 0 1 * *
@yearly0 0 1 1 *

Примечание. Не все демоны cron могут понимать этот синтаксис (в частности, более ранние версии), поэтому рекомендуем убедиться в этом, прежде чем широко использовать подобный синтаксис.

Кроме того, краткая запись @reboot будет запускать любую команду, которая следует за ней при каждом запуске сервера:

Использование этих комбинаций при возможности поможет понимать расписание задач в вашем файле crontab.

Заключение

Cron — это гибкая и мощная утилита, которая позволяет снизить количество ресурсов, затрачиваемых на администрирование системы. Используя cron вместе со скриптами оболочки, вы можете автоматизировать задачи, которые обычно вызывают затруднения. Например, вы можете написать скрипт оболочки для отправки резервных копий данных решению хранилища объектов и затем автоматизировать его с помощью cron.

Источник

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

Авторизуйтесь

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Crontab.guru

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

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

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

Crontag Generator

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

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

Сайт Crontab Generator

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

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

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

Источник

Настройка планировщика задач Cron в Linux. Как запускать задания Cron каждые 5, 10 или 15 минут

Как запускать задания Cron каждые 5, 10 или 15 минут. Cron — классический демон (компьютерная программа в системах класса UNIX), использующийся для периодического выполнения заданий в определённое время.

Что это такое Cron?

Cron – это планировщик заданий, который работает на UnixLinux хостинге. Он позволяет автоматически выполнять определенные действия на сервере (запуск программ, скриптов и т.д.), с заданным временем или периодичностью.

Историческая справка

Утилита была разработана ещё в начале 70-х годов прошлого столетия, когда Кен Томпсон и Деннис Ритчи создали ОС UNIX. Они работали над проектом по созданию многозадачной и многопользовательской системы Multics, в котором принимали участие компании AT&T и Bell Labs. В то время подобная система была настолько высокотехнологичным и прорывным продуктом, что позже Bell Labs отказалась от активного участия в проекте из-за крайне низкой востребованности подобного рода систем для широкого потребления.
Однако, используя наработки из проекта Multics, Томпсон и Ритчи на этой основе и на волне энтузиазма создали ОС UNIX. Такая мощная и прорывная платформа для полноценного раскрытия своего функционала нуждалась в обеспечении её функционалом в виде специализированного ПО и утилит, одной из которых и по сей день является cron. Разработчиком утилиты является Кен Томпсон.

Конфигурационные файлы cron

Следующие файлы ограничивают доступ к планировщику (по умолчанию они не существуют):

Если cron.allow существует, только юзерам, перечисленным в нем, разрешено использовать cron, при этом файл cron.deny игнорируется. Если cron.allow не существует, юзерам, указанным в cron.deny, не разрешается использовать планировщик cron.

Формат записей в обоих файлах – одно имя пользователя в каждой строке. Пробелы не разрешены.

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

Функционал и основные компоненты примеры cron

Описания регулярных действий, запускаемых утилитой– это так называемая crontab-таблица, которая имеет строго определенный формат. Она состоит из 6 колонок, разделённых табуляторами или пробелами, первые 5 из которых определяют время запуска действия. Последняя колонка интерпретируется как команда запуска, т. е. само действие.

Приведённое описание действия означает запуск резервного копирования (путём архивирования и помещения созданного архива в var/backups/) всех каталога /home каждую неделю (по понедельникам) в 5 утра. Как видно, сначала задаётся колонка минут, затем часов, дней, месяцев и дней недели. Далее следует команда запуска, в данном случае для создания архива. В колонках, определяющих время могут использоваться числа, группы чисел, разделяемых запятыми, диапазоны чисел, разделяемых дефисом, а также символы «*» и «/». Каждому действию соответствует строка описания в crontab-файле. В приведённом примере цифра «1» означает порядковый номер дня недели — понедельник, соответственно «2» — вторник, «3» — среда и т. д., причём воскресенье это «0» или «7». Символ «*» означает любое значение с учётом валидности для соответствующего параметра. Для задания шага значений используется символ «/», например:

23 */2 * * * echo “Выполняется в 0:23, 2:23, 4:23 и т. д.”

Пример настройки планировщика на выполнение задачи каждые 5 минут выглядит так

*/5 * * * * echo “Выполняется каждые 5 минут”

*/1 * * * * echo “Выполняется каждую минуту”

* */1 * * * echo “Выполняется каждый час”

каждое первое число февраль, июль и ноябрь в 2.30

10 00 01 02,07,11 * echo “каждое первое число февраль, июль и ноябрь в 0.10”

00,30 * * * * echo “каждые полчаса”

* * * * 6,7 echo “суббота и воскресенье”

00 10,15,20 * * * echo “будет выполняться каждый день в 10.00 и 15.00, 20.00”

один раз в день с 00 до 09 часов по буднем.

00 00-09 * * 1-5 echo “будет выполняться с 00 до 09 часов по буднем”

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

00 01 * * * /etc/scripts/script.sh

В данном примере скрипт /etc/scripts/script.sh будет запускаться каждый день в час ночи. Существуют два типа crontab-файлов: системные и пользовательские. В отличие от пользовательских, в системных после колонок задания времени используется еще колонка для указания пользователя, от которого выполняется действие:

17 * * * * root cd / && run-parts —report /etc/cron.hourly

Кроме того, местоположение системных и пользовательских crontab-файлов различается: файлы, используемые для действий, управляющих системой находятся в /etc/cron.d/, а файлы, создаваемые для отдельных пользователей хранятся по адресу /var/spool/cron/crontabs/.
Для корректной работы утилиты необходимо в файлах crontab указывать оболочку командного интерпретатора, а также добавлять домашний каталог пользователя в PATH:

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

Если в описании действия команда отправляет текстовое содержимое в стандартный вывод, то программа, при наличии электронного адреса, автоматически перехватит это сообщение и отправит по e-mail.

Cron и Cron Job: Основы

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

Если у вас есть свой VPS в Hostinger, ваши учётные данные для входа находятся во вкладке управления VPS. Подключитесь к вашему серверу по SSH. Если что-то не получается, ознакомьтесь с нашим руководством по PuTTY SSH.

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

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

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

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

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

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

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

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

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

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

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

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

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

Разница между Cron, Crontab и Cron Job

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

Daemon (Демон)‘crond’Произносится «demon» или «day-mon». Это фоновые системные процессы Linux.
Table (Таблица)‘crontab’Вы записываете строки в эту таблицу при вводе команды crontab. Каждая звездочка «*» представляет отрезок времени и соответствующий столбец в каждой строке.
Job (Задача)Cron JobКонкретная задача, которая должна быть выполнена, описана в строке в сочетании с назначенным ей идентификатором времени

Некоторые особенности cron

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

Узнать, запущена ли в данный момент утилита крон, позволяет команда:

service cron status

systemctl status cron

Для запуска и остановки можно также использовать:

service cron start service cron stop

systemctl start cron systemctl stop cron

Таблица Cron

Crontab означает Cron Table. Это системный файл Linux, который создает табличную структуру, в которой поля разделяются пробелами. Пользователи могут заполнять таблицу, присваивая значения каждому полю (звездочка).

Если это поможет, вы можете думать о вашем crontab как о мини-базе данных.

Cron Job

Если вы не знакомы с базами данных, вы можете представить ячейки в пустом файле Excel. В любом случае, для этой аналогии каждая звездочка представляет столбец, значение которого определяется его заголовком. Последний столбец будет вызовом команды или сценария. Каждый полный ряд можно рассматривать как отдельную работу. Их часто называют “cron jobs”, хотя работа, задание и т. д. Являются взаимозаменяемыми терминами.

Демон Cron

Мы уже обсуждали таблицу и как мы заполняем ее рабочими местами. Но как эти работы выполняются? Системный процесс под названием Daemon выполняется на фоне нашего Linux-компьютера.

Есть демоны для разных сервисов. Обычно они называются суффиксом «d» к имени службы.

Естественно, демон cron называется «crond». С нашей стороны не требуется никаких действий для запуска этого демона, но если вы считаете, что команда не работает должным образом, вы можете использовать команду ps, чтобы убедиться, что crond запущен.

ps aux | grep crond

Эта команда будет искать текущие процессы для всех пользователей и возвращать любые экземпляры ‘crond’.

$ ps ux | grep crond andrey+ 4352 0.0 0.0 18612 840 pts/0 S+ 02:16 0:00 grep –color=auto crond

Мы видим, что демон запущен для нашей учетной записи.

Понимание синтаксиса Crontab

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

crontab [options] * * * * * OR * * * * *

Мы обещаем, что это произойдет, потому что для вас, как только мы приведем в действие наш собственный пример. Давайте снова рассмотрим синтаксис для заданий cron.

Как видите, синтаксис crontab состоит из 5 звездочек. Вот что представляет каждая из этих звездочек:

ПРИМЕЧАНИЕназвания дней от 0-6 начинаются с воскресенья.

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

Давайте немного потренируемся. Если у вас есть crontab, подобный приведенному ниже, как вы думаете, когда работа будет запущена?

Вопрос: Когда команда будет запущена, если вы зададите задание таким образом?

A. Каждый час с понедельника по субботу
B. Каждая минута по воскресеньям
C. Только в полночь с понедельника по субботу
D. Только в полночь по воскресеньям

Формат Linux Crontab

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

MIN HOUR DOM MON DOW CMD

Таблица: Поля и допустимые диапазоны Crontab (синтаксис Linux Crontab)

Синтаксис и операторы Crontab

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

* * * * * command(s) ^ ^ ^ ^ ^ | | | | | allowed values | | | | | ——- | | | | —– Day of week (0 – 7) (Sunday=0 or 7) | | | ——- Month (1 – 12) | | ——— Day of month (1 – 31) | ———– Hour (0 – 23) ————- Minute (0 – 59)

Первые пять полей (время и дата) также принимают следующие операторы:

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

Crontab.guru

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

Crontag Generator

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

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

Постановка задачи и настройка cron

Для примера будем использовать следующую задачу:

Установка cron в Linux

По умолчанию cron доступен при установке CentOS 8. Если же у вас по каким-то причинам он отсутствует, вы можете установить его из базового репозитория с помощью yum / dnf:

В моем случае cron уже был установлен:

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

После установки, демон crond нужно добавить в автозагрузку и запустить:

# systemctl enable crond.service
# systemctl start crond.service

Как и куда вводить Cron-задания?

Первый способ работы с Cron – это панель управления хостингом. Но в разных панелях настройка и управление осуществляются по разному:

Если у вашего хостинг-провайдера нет возможности работать с заданиями через панель управления, то вся работа с Cron обычно производится через SSH-протокол. Здесь все просто – подключаетесь к серверу по SSH и вводите команды. Для подключения к серверу используют бесплатную программу PuTTY (как настроить), а команды вводят в командной строке.

Чтобы начать работу вводим команду

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

Если запустится более легкий редактор, то все отлично, если же ваш хостинг-провайдер его не поддерживает, то Google поможет разобраться с vi. Мы лишь кратко обозначим основные моменты:

Ввод текста – жмем клавишу i и редактор перейдет в режим ввода текста;

выйти из режима ввода текста – Esc

Удалить символ – x (если вы находитесь в режиме ввода теста, то чтобы удалить символ сначала нажмите Esc, а потом x);

Сохранить и выйти – :wq (если вы находитесь в режиме ввода теста, то чтобы удалить символ сначала нажмите Esc, а потом :wq).

Важно! Вводя задания для Cron после каждой строчки нужно обязательно нажимать Enter, даже если эта строчка единственная.

Отправка уведомлений cron на e-mail

Если вы хотите получать информацию о выполнении ваших задач cron по почте, нужно выполнить настройку cron-файла с задачами.

Для отправки почты на сервере дожен быть установлен почтовый-агент. Для теста, я установил на сервер sendmail:

sendmail – бесплатный агент для передачи почты, который доступен практически для любой операционной системе.

Настроем параметры отправки e-mail в cron-файле. Добавьте в файл следующие строки:

MAILTO=”*@gmail.com” SHELL=/bin/bash HOME=/ * * * * * echo “Проверка cron”

MAILTO — укажите свой почтовый ящик

SHELL — оболочка пользователя

HOME — путь к файлу cron

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

После каждого запуска задачи на указанный email отправляется уведомление:

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

Информацию о запуске задания cron можно сохранять в лог-файл. Для этого, в конце задания нужно добавить >> и указать путь до лог-файла:

* * * * * echo “Проверка cron” >> /var/log/admin/journal.log

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

* * * * * echo “Проверка cron” >> /dev/null 2>&1

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

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

После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог 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 что это

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

Запуск PHP-файлов по расписанию с помощью Cron

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

“-q” отключает вывод операции на экран

“-t 1” разрешается только одна попытка соединения.

http://mysite.com/file.php – путь к вашему PHP-фалу (не обязательно указывать абсолютный путь).

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

Но в этом случае вам нужно знать путь к папке wget на своем сервере (чаще всего /usr/bin/wget или /usr/local/bin/wget).

Если вы до сих пор не поняли, что означают “30 3 * * 2”, то вверху статьи мы это описали.

Как изменить расписание

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

По умолчанию откроются задачи текущего пользователя. Для редактирования задач другого пользователя используйте команду:

Как узнать список заданий Crontab

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

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

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

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

Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример – запускать его каждую минуту:

задания 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

Понедельник считается первым днем, воскресенье – это седьмой или нулевой день. Еще можно писать сокращенное название дня недели, например sun – воскресенье:

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

Вы можете захотеть не указывать отдельно время, а просто указать интервал, с которым нужно запускать скрипт, например, раз в 10 минут. Для этого используется разделитель косая черта – “/”:

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

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

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

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

sudo vi /etc/corn.daily/basckup

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

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

1. Ежедневно в 2 часа ночи.

Это будет полезно для ежедневного резервного копирования.

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

2. Расписание задач для более частого выполнения (например, дважды в день)

Следующий скрипт использует дополнительное резервное копирование дважды в день каждый день. В этом примере выполняется дополнительное резервное копирование (incremental-backup) в 11:00 и в 16:00 каждый день. Значения через запятую в поле указывают, что команда должна быть выполнена в каждое указанное время.

00 11,16 * * * /home/developer/bin/incremental-backup

00 – 0-ая минута (начало часа) 11, 16 – 11 и 16 часов * – каждый день * – каждый месяц * – каждый день недели

3. Каждую минуту:

# Минута Час День Месяц День недели * * * * *

4. Каждое воскресенье в 17:00

Пригодится для планирования еженедельных задач.

0 17 * * sun /scripts/script.sh

5. Запускать задание Cron каждые 10 минут

Чтобы запускать задание cron каждые 10 минут, добавьте в файл crontab следующую строку:

6. Определенные месяцы

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

7. Определенные дни

Если вам необходимо составить расписание выполнения задачи только на некоторые дни. Приведенный ниже пример будет выполняться каждое воскресенье и пятницу в 17:00.

0 17 * * sun,fri /script/script.sh

8. Первое воскресенье каждого месяца.

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

9. Каждые четыре часа.

Если вы хотите запустить скрипт с интервалом в 4 часа:

0 */4 * * * /scripts/script.sh

10. Дважды в каждое воскресенье и понедельник.

Чтобы запланировать выполнение задачи дважды только в воскресенье и понедельник:

0 4,17 * * sun,mon /scripts/script.sh

11. Несколько задач

Можно запланировать несколько задач в одной записи с помощью точки с запятой:

12. Ежегодно (@yearly)

@yearly равно «0 0 1 1 *». Задание будет выполняться в первую минуту каждого года. Можно отправить новогодние поздравления

13. Ежемесячно (@monthly)

@monthly равно «0 0 1 * *». Задание будет выполняться в первую минуту месяца.

14. Еженедельно (@weekly)

@weekly равно «0 0 1 * mon». Задание будет выполняться в первую минуту недели.

15. Ежедневно (@daily)

@daily равно «0 0 * * *». Задание будет выполняться в первую минуту каждого дня.

16. Ежечасно (@hourly).

@hourly равно «0 * * * *». Задание будет выполняться в первую минуту каждого часа.

17. Выполнение задач при перезагрузке системы (@reboot).

@reboot полезен для тех задач, которые вы хотите запустить при перезагрузке системы.

18. Отправка результатов заданий на электронную почту

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

Как избежать повторного выполнения задачи

В представленном виде есть одна неопределенность, а именно — повторное выполнение задачи в случае, если она уже начата. Это становится особенно актуально, если задача «сложная» и требует несколько секунд на ее реализацию.
Таким образом создается проблема повторного выполнения:

Результат

Ручная настройка CronTab позволяет настраивать время запуска скрипта в привычном виде, для тех, кто знаком с Cron.

Время, интервал

Минуты могут быть от 0 до 59

Часы могут быть от 0 до 23

День месяца может быть от 1 до 31

Месяц может быть 1 до 12

День недели может быть от 0 до 7, где 0 и 7 – воскресенье

Можно конфигурировать CronTab для выполнения задач не только в определенное время, но и ежеминутно, ежечасно, ежедневно, еженедельно или ежемесячно, используя комбинацию */x.

Примеры настройки временных интервалов

*/5 * * * * — запускать команду каждые пять минут

0 */3 * * * — запускать каждые три часа

0 12-16 * * * — запускать команду каждый час с 12 до 16 (в 12, 13, 14, 15 и 16)

0 12,16,18 * * * — запускать команду каждый час в 12, 16 и 18 часов

/site.ru/public_html/test.php — запуск каждую минуту php-скрипта test.php

/site.ru/public_html/test.pl — запуск каждый час perl-скрипта test.pl

Команда

Необходимо задать путь до скрипта от домашнего каталога. Например: public_html/cgi-bin/script.pl

Система сама подставит символ

/ (эта комбинация заменяет полный путь). Получится:

Если в конце пути поставить символ & (амперсанд), то скрипт будет работать в фоновом режиме. Установка этого символа необязательна.

Что произойдет, если задание cron обнаружит ошибку?

Поведение по умолчанию – отправлять по электронной почте свой вывод. Эта функция предназначена для администраторов, которые могут автоматически отправлять журналы на «локальную» электронную почту в домене сети.

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

Что будет с Cron при перезапуске сервера?

Он перезагрузится вместе с сервером. ваши задания не пропадут, они будут работать как и ранее.

Получение отчета о работе Cron на почту

Cron можно настроить так, чтобы на электронную почту приходили сообщения с результатами запущенных заданий. Эта функция также может быть полезна, для уведомления на случай ошибки. Для получения отчета на e-mail нужно редактируя crontab (перед заданиями) написать такую строку:

где info@mydomain.com – это e-mail на который будут приходить письма. Также можно добавить несколько адресов, через запятую.

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

Какие есть ограничения для работы Cron?

Единственное ограничение, которое может относится именно к Cron’ну – это ограничение на периодичность запуска. Например чтобы не перегружать сервер, провайдер может разрешать запуск Cron-заданий не чаще, чем один раз в час или полчаса. В остальном на эти задания действуют все те же ограничение, что и на сервер в целом (память ОЗУ, размер файла, время его выполнения и т.д.). Все эти ограничения задаются хостинг-провайдером и узнать их можно только у него.

Нюансы

Частные случаи

Для запуска задачи чаще, чем раз в минуту, используем sleep.

Для этого пишем в crontab:

* * * * * /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php; /bin/sleep 30; /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php

для запуска файла каждые 30 секунд.

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

Логичным вариантом будет создание lock файла и при запуске скрипта проверять наличие файла. Но на хостинге Timeweb, как и на других хостингах, присутствует ограничение по процессору. Скрипт зависит от условий и времени выполнения, а значит, мы не можем предугадать время выполнения скрипта. Если скрипт выполнится с нарушением правил и ограничений (https://timeweb.com/ru/services/hosting/rules/), то процесс завершится со стороны хостинга. Тогда lock файл не будет удален, а значит, и скрипт не будет запускаться по крону, пока файл не будет удалён.

Маэстро из отдела инженеров рассказал, как решить задачу.

Для начала создаём sh скрипт в файл /home/c/cc123456/tmp/twtest.sh:

В панели управления в разделе crontab выбираем тип “Исполняемый бинарный файл”.

В поле “Полный путь” пишем:

/home/c/cc123456/tmp/twtest.sh /opt/php56/bin/php /home/c/cc123456/tmp/twtest.php

Указываем необходимое время запуска и придумываем название.

Размышления о безопасности

Существует множество ситуаций, когда вы не хотите, чтобы пользователь, имеющий доступ к вашей системе, имел возможность создавать записи crontab. Здесь в игру вступают файлы /etc/cron.deny и /etc/cron.allow. Их использование аналогично /etc/hosts.allow и /etc/hosts/deny, поэтому, если вы работали с этими файлами раньше, то будете чувствовать себя как дома. Этих двух файлов (cron.deny и cron.allow) по умолчанию нет в системе, по крайней мере на системе, в которой мы работаем, поэтому по умолчанию всем разрешено создавать записи в crontab. Вы можете проверить, какие файлы, относящиеся к cron имеются в вашем каталоге /etc с помощью команды:

И снова напоминаем, что все сказанное справедливо для Linux, так как отсутствие этих файлов на Solaris означает прямо противоположное, кроме того, файлы расположены в других местах. Сначала проверяется cron.allow, поэтому обычно мы вводим “ALL” в cron.deny, а затем добавляем пользователей, которым мы хотим предоставить доступ, в cron.allow.

Заключение

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

Источник

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

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