Что такое Cron.php и для чего он нужен
Сron.php — это скрипт позволяющий настроить выполнение определенных действий в системе по расписанию без участия администратора сайта.
Настройка выполнения Cron.php
Алгоритм настройки выполнения Cron.php зависит от используемого хостинга.
Обычно в админке хостинга есть раздел с названием «Планировщик заданий» или «Управление Crontab» в котором и выполняется настройка.
Запускать Cron.php можно командой
wget http://ваш_сайт/cron.php
но иногда на хостинге есть и другие варианты запуска, поэтому лучше ознакомиться с документацией хостинга по данному вопросу либо уточнить его в техподдержке хостинга.
О различных вариантах запуска Cron.php описано в нашей документации:
Системные функции Сron.php в модулях
Тут перечислены системные модули и функции в них которые могут выполняться при запуске Cron.php.
При необходимости вы можете добавить свои функции, которые будут выполняться по расписанию, например:
Интеренет-магазин (emarket)
onCronSyncCurrency — Синхронизирует курсы валют с цб
onCronCheckExpiredCustomers — Удаляют «просроченные» объекты незарегистрированных покупателей
onCronCheckExpiredOrders — Удаляют «просроченные» объекты незавершенных заказов
onCronCheckExpiredCustomersOneClick — Удаляют «просроченные» объекты незавершенных заказов в 1 клик
Резервирование (backup)
onCronCleanChangesHistory — Очищает историю изменений модуля «Резервирование» в соответствии с настройками времени хранения событий
Конфигурация (config)
maintainDataBaseCache — Выполняет операции по обслуживанию кеширования через базу данных
runGarbageCollector — Запускает системный сборщик мусора(в частности устаревшие файлы файлового кэша и мусор в БД);
Структура (content)
cronSendNotification — Проверяет необходимость послать уведомление об окончании срока публикации, и, соответственно, посылка таковых;
cronUnpublishPage — Проверяет окончание срока публикации и деактивация таких объектов;
Новости (news)
feedsImportListener — Импортирует все фиды RSS.
cronActivateNews — Активирует новости с подходящей датой публикации
Каталог (catalog)
reIndexOnCron — Выполняет переиндексацию фильтров разделов каталога
Рассылки (dispatches)
onAutosendDispathes — Выполняет отправку запланированных рассылок
Cron
Cron — популярный инструмент в Unix-системах, который помогает запланировать исполнение различных заданий прямо в ОС. Операции будут совершаться в обозначенные дату и время, с указанной пользователем периодичностью. Такие отложенные процессы также называют cron jobs. Этот инструмент подходит для решения многих задач: отслеживания свободного дискового пространства, регулярного резервного копирования, удаления ненужных файлов (логов) и т.д.
«IT-специалист с нуля» наш лучший курс для старта в IT
Что такое cron и файлы crontab
Коротко cron можно описать как планировщик задач. Он способен в обозначенное время с определенной периодичностью выполнять скрипты на сервере. Например, разработчику нужно собирать статистику каждые 3 дня в 18:00. Для этого он создает «задание», логику которого описывает в файле crontab.
Файл crontab представляет собой таблицу, оформленную в специальном формате и содержащую расписание старта скриптов. Каждый пользователь на сервере системы получает доступ к индивидуальному crontab-файлу, в котором создает нужные ему задачи.
Cron является встроенной утилитой и доступен в каждом дистрибутиве Linux. Обратите внимание, он считается устаревшим в операционных системах с поддержкой systemd. В таких дистрибутивах Linux его заменили на systemd.timer. Предназначение этой утилиты полностью совпадает с cron. При этом популярность «устаревшего» планировщика все еще выше благодаря простоте использования.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Когда применяется cron
Как правило, от cron в операционных системах на основе Linux требуют выполнения очевидных задач, например бэкапов сайтов, баз данных и пр. Однако сфера применения этого инструмента гораздо шире.
- Пользователи могут с помощью планировщика запускать скрипты для корректировки системного времени. Эта операция нужна, потому что время ОС и аппаратного обеспечения может различаться (это нужно исправлять). Если для программной настройки обычно используется Network Time Protocol, то корректировку для «железа» может регулярно выполнять cron.
- Один из распространенных сценариев использования планировщика — создание оповещений, которые демонстрируются пользователю каждое утро. В этих сообщениях может содержаться информация о состоянии компьютера или любые другие полезные данные. Например, утилита может присылать администратору электронные письма с отчетом о работе сайта за последние сутки.
- Некоторые сервисы могут использовать cron даже без ведома владельца компьютера. Среди примеров можно назвать Rootkit Hunter, Logwatch и Logrotate. Большинство повторяющихся задач они настраивают, используя эту утилиту.
Cron дает пользователям возможность автоматизировать множество задач и сократить влияние человеческого фактора на работу сервера. Например, утилита не забудет сделать резервную копию.
Основные принципы работы с cron и crontab через SSH-протокол
В тех случаях, когда хостинг-провайдер не предоставляет пользователю функциональных веб-интерфейсов для управления сервером, для работы с cron приходится использовать командную строку. Для подключения к серверу понадобится протокол Secure Shell.
Чтобы работа с планировщиком стала проще, предусмотрен ряд команд для решения основных задач:
- crontab -e — открытие файла конфигураций (настроек);
- crontab -l — демонстрация списка, то есть всех запланированных операций для конкретного пользователя;
- crontab -r — полное удаление файла настроек и всех задач текущего пользователя;
- crontab -v — информация о последнем открытии файла конфигураций;
- man crontab — позволяет узнать подробную информацию.
Для планировки задач через командную строку нужно выполнить первичную настройку, убедиться, что отсутствуют ограничения, и заполнить расписание в файле crontab.
Первичная настройка cron
В своей работе планировщик задач использует информацию из таблиц crontab. Как отмечалось ранее, каждый пользователь на сервере вне зависимости от прав (в том числе root) должен иметь свой индивидуальный файл crontab. По умолчанию в системе их нет, поэтому они создаются вручную.
| Чтобы создать таблицу, нужно ввести команду crontab -e. После этого в директории /var/spool/cron автоматически появится нужный файл. |
Если команда crontab -e выполняется впервые, система предложит определить, какой редактор будет использоваться. На выбор может быть предложено несколько вариантов, из которых /bin/nano будет самым простым, также пользователь может увидеть /usr/bin/vim.basic и другие. Каждый вариант будет пронумерован. Чтобы выбрать, нужно нажать соответствующую цифру.
Новый файл crontab представляет собой пустое текстовое поле. Пользователь с нуля добавляет в него задачи, используя соответствующий синтаксис. Когда все параметры будут введены, нужно сохранить их нажатием клавиши F2. Чтобы закрыть файл, необходимо нажать F10. Если пользователь все сделал правильно, в терминале появится строка следующего содержания:
crontab: installing new crontab
За работу планировщика задач после сохранения настроек в Linux отвечает фоновый процесс crond.
Формат записей
Для создания заданий в cron используется специальный формат строк в таблице-расписании. В каждой из них содержится определенная информация:
- параметры для запуска нужной задачи (дата, время);
- сама команда для выполнения операции.
Команда в этом случае — название скрипта в файловой системе Linux. К скриптам можно добавлять различные специальные параметры, они отделяются от названия при помощи пробелов.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов
Синтаксис crontab
Сначала нужно ввести команду crontab -e. Код в первых трех линиях таблицы нужен для настройки первичных параметров таблицы. Сначала необходимо выбрать оболочку для работы утилиты. У cron нет рекомендаций по оптимальному варианту — планировщик будет стабильно работать в любой оболочке. Если пользователь хочет получать отчеты о работе cron, нужно указать email, куда их отправлять. Третьей строкой прописывается путь к окружению.

Описание самой задачи начинается с ввода значений в 5 специальных полей, которые указывают, в какое время запустится нужный процесс.
- Минуты (допустимы параметры от 0 до 59).
- Часы (можно ввести значения от 0 до 23).
- Дата (от 1 до 31).
- Месяц (порядковый номер от 1 до 12).
- Дни недели. Отсчет начинается с воскресенья, которое обозначается как 0, суббота, соответственно, 6. Также доступны варианты с сокращениями SUN, MON и т.п.
Между значениями этих полей необходимо ставить пробелы, чтобы отделять их друг от друга. Чтобы процесс корректно запускался, параметры времени также необходимо отделять пробелом от названия скрипта.

На изображении выше показан шаблон, который помогает понять, как вводить параметры в расписание. Обратите внимание на значки * — это конкретные значения, которые нужно ввести, чтобы задать время выполнения задачи. Когда в поле нет числа, а есть только *, значит, скрипт будет подставлять любые возможные значения. Если оставить * в поле месяца, но прописать значения в предыдущих, скрипт будет выполняться ежемесячно в конкретный день, если он есть. Например, планировщик не запустит процесс в феврале, если дата выставлена на 30 число.
Стандартная запись будет выглядеть так:
20 07 * * * /home/admin/backup
Она означает, что cron ежедневно будет запускать команду /home/admin/backup утром в 7 часов 20 минут.
В полях даты и времени допустимо использовать дополнительные символы.
- Запятые — для создания перечней. Можно прописать в поле «часы» значение 5,10,19, в этом случае указанная команда в течение суток будет запускаться трижды — в 5, 10 и 19 часов.
- Слэши — для создания цикличности. Запуск команды можно описать с помощью временных промежутков без привязки к конкретному времени. Например, ввести */20 в поле «минуты», тогда скрипт будет срабатывать каждые 20 минут.
- Тире — для обозначения промежутка. Можно ввести в поле «дни недели» параметры «0-3», чтобы скрипт срабатывал с воскресенья по среду, а в остальные дни не запускался.
Важно учитывать, что запуск команд привязан к серверному времени и к часовому поясу (timezone). Чтобы узнать второй параметр, можно обратиться к службе поддержки хостинга или ввести команду date в командную строку.
Существуют уже готовые команды, которые позволяют задать параметры выполнения скрипта. Они выглядят так:
- @reboot — команда выполнится один раз при перезагрузке системы;
- @yearly — задание будет выполняться один раз в год;
- @annually — вариация команды @yearly, делает то же самое, но в Новый год;
- @monthly — ежемесячное выполнение задания;
- @weekly — скрипт будет срабатывать раз в неделю;
- @daily — ежедневное выполнение;
- @midnight — срабатывание раз в день в полночь;
- @hourly — скрипт выполняется ежечасно.
Записи с готовыми командами выглядят следующим образом:
Какие команды можно задавать в Cron через командную строку
Приведем примеры, как могут выглядеть команды в файле crontab для выполнения различных заданий.
Команда №1
03 07 10 * * /usr/local/bin/backup -vbd1 ; /usr/local/bin/backup -vbd2
Такая команда создаст в расписании задание на запуск процесса backup (его нужно будет сначала создать), который будет проводить резервное копирование на сторонний накопитель всех системных файлов. Скрипт будет запускаться в 7 часов 3 минуты 10 числа. Оставшиеся поля со звездочками показывают, что у задачи нет конкретных значений месяца и дня недели, значит, бэкап будет выполняться ежемесячно.
Команда №2
32 12 * * * /sbin/hwclock —systohc
Эта задача заставляет приводить к единому значению время в операционной системе и аппаратном обеспечении. Происходить данный процесс будет ежедневно в 12 часов 32 минуты. Здесь не указана дата, поэтому cron воспринимает задание как подлежащее к исполнению ежедневно.
Команда №3
15 03 21 * * /usr/bin/apt-get update
Эта задача обновит пакеты через пакетный менеджер apt. Выполняться эта операция будет ежемесячно 21 числа в 03:15.
Ограничения Cron
Планировщик cron позволяет установить ограничения на его использование. Чтобы задать их, существуют специальные файлы cron.deny и cron.allow.
Cron.deny располагается в /usr/lib/cron/cron.deny. Этот файл содержит названия учетных записей, которым запрещено пользоваться планировщиком. Они не могут создать свой crontab и задания в нем.
Cron.allow располагается в /usr/lib/cron/cron.allow. В файле находится перечень имен пользователей, которым разрешено планировать задачи с использованием данной системной утилиты.
Когда в системе нет cron.allow, то не существует никаких ограничений на планирование задач — все пользователи по умолчанию могут пользоваться возможностями Cron, если имен их учетных записей нет в файле cron.deny.
Основные принципы работы с планировщиком через панель управления
В меню панелей управления сервером многие хостинг-провайдеры предусматривают отдельное меню, которое позволяет пользоваться возможностями Cron. Например, в панели управления Timeweb для создания задачи требуется зайти в раздел Crontab. В интерфейсе он расположен сбоку слева. В открывшемся меню нужно нажать на кнопку «Добавить новую задачу» и ввести ее параметры. Разберемся, что именно нужно учитывать при создании повторяющегося задания.

- Задаче нужно дать название, в котором не будут использоваться спецсимволы. Подойдет любой текст, но желательно описать, что именно в этом случае будет делать cron, чтобы в дальнейшем не запутаться.
- Следует обозначить исполнителя задачи. Это значит, пользователь указывает, с чем будет работать планировщик (HTTP-запросом, PHP-скриптом или файлом).
- Затем заполняется графа «Путь до файла». Здесь должен быть путь до того скрипта, который будет регулярно запускаться с помощью cron. Например, это может выглядеть так: /home/usr/someusername/thescriptfortest.php. Панели управления также предлагают воспользоваться встроенным файловым менеджером, чтобы упростить работу.
- На финальном этапе настройки указывается, с какой периодичностью будет исполняться задача. Панель управления предлагает несколько вариантов по умолчанию в стиле «Раз в день», но пользователь может выбрать вариант «Продвинутые настройки» и задать параметры вручную. После этого останется нажать «Создать задачу».
Работа с планировщиком через панель управления легче: пользователю не нужно запоминать синтаксис crontab, вероятность ошибки очень мала. Предлагаем посмотреть, как Cron выглядит в интерфейсе ISPmanager.

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

Crontag Generator
Второй ресурс для генерации кода, который потом можно использовать в crontab-файле. Принцип работы такой же, как у предыдущего сайта: пользователь вводит данные, проставляет флажки в чекбоксы и в итоге нажимает кнопку Generate Crontab Line.

IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Статьи по теме:
Cron: что это такое и как его правильно использовать

Разбираемся с тем, что представляет собой Cron, как он работает и зачем нужен. Пытаемся обуздать его параметры, чтобы планировать задачи на своем сервере без лишних затрат сил и времени.
Что такое Cron и crontab?
Если в двух словах, то Cron – это планировщик задач. Если подробнее, то это утилита, позволяющая выполнять скрипты на сервере в назначенное время с заранее определенной периодичностью.
К примеру, у вас есть скрипт, который собирает какие-либо статистические данные каждый день в 6 часов вечера. Такие скрипты называют «заданиями», а их логика описывается в специальных файлах под названием сrontab.
crontab – это таблица с расписанием запуска скриптов и программ, оформленная в специальном формате, который умеет считывать компьютер. Для каждого пользователя системы создается отдельный crontab-файл со своим расписанием. Эта встроенная в Linux утилита доступна на низком уровне в каждом дистрибутиве.
В Linux-дистрибутивах с поддержкой systemd Cron считается устаревшим решением, его заменили утилитой systemd.timer. Ее предназначение и функциональность не отличается, но фактически частота использования Cron все еще выше.
Для чего обычно используют Cron?
Обычно Cron заставляют повторять вполне очевидные задачи в духе регулярного создания резервных копий данных. Но это не все.
- Некоторые пользователи с помощью планировщика корректируют системное время. На многих компьютерах оно настраивается через Network Time Protocol. А так как этот протокол настраивает только время ОС, время, установленное для «железа», может отличаться. Cron позволяют регулярно корректировать время, установленное для аппаратного обеспечения, в соответствии со временем ОС.
- Еще один популярный сценарий – создание оповещений, появляющихся каждое утро и рассказывающих о состоянии компьютера. В эти сообщения может входить любая полезная для пользователя информация.
- Cron иногда работает даже без ведома пользователя. Эту утилиту используют такие сервисы, как Logwatch, logrotate и Rootkit Hunter. Повторяющиеся задачи они настраивают, как и пользователи, через Cron.
С помощью Cron пользователи автоматизируют самые разные задачи, сокращая вмешательство системного администратора в работу сервера.
Базовые принципы работы с Cron и crontab (через панель управления)
Многие хостинг-провайдеры предлагают отдельное меню в панели управления для настройки расписания запланированного выполнения скриптов.
Разберем подобное меню на примере панели управления Timeweb. Чтобы создать новую задачу, необходимо открыть раздел Crontab в боковой панели веб-интерфейса, кликнуть по кнопке «Добавить новую задачу» и указать параметры повторяющейся команды. Поговорим подробнее о параметрах.
- Сначала надо придумать для команды название (подойдет любой текст без спецсимволов).
- Затем указываем исполнителя (нужно выбрать, будет ли планировщик работать с исполняемым файлом, PHP-скриптом или HTTP-запросом).
- В графе «Путь до файла» вводим абсолютный путь до скрипта, запуск которого хотим запланировать. К примеру: /home/u/myusername/mytestscript.php. При желании можно воспользоваться встроенным файловым менеджером и выбрать заранее предзагруженный на сервер скрипт.
- После этого указываем периодичность выполнения выбранного скрипта или исполняемого файла (в списке доступны предустановки в духе «Каждую минуту» или «Раз в день», но можно выбрать и пункт «Продвинутые настройки»).
- Кликаем по кнопке «Создать задачу».
На этом все. Скрипт запланирован и будет регулярно повторяться.

Базовые принципы работы с Cron и crontab (через SSH-протокол)
Планировать задачи через панель управления удобно, но не всегда возможно. Не все хостинг-провайдеры предлагают такие функциональные веб-интерфейсы. В этом случае придется воспользоваться командной строкой, подключившись к серверу по протоколу Secure Shell.
Для работы с планировщиком в системе есть ряд команд, помогающих решать основные задачи:
- crontab -e – открывает конфигурационный файл (поговорим о нем чуть подробнее в разделе с первичной настройкой).
- crontab -l – показывает список задач из конфигурационного файла (все, что было запланировано).
- crontab -r – удаляет конфигурационный файл вместе со всеми запланированными задачами.
- сrontab -v – показывает, когда в последний раз открывался конфигурационный файл.
Чтобы запланировать задачи, используя командную строку, необходимо выполнить базовую настройку Cron, проверить, не установлены ли ограничения, и заполнить расписание задач в соответствии с синтаксисом сrontab.
Первичная настройка Cron
Как мы уже выяснили ранее, планировщик черпает параметры для выполнения своих задач из crontab-файлов (таблиц с расписанием). У каждого пользователя, включая root, должен быть свой crontab-файл. По умолчанию он не существуют, поэтому придется создать его вручную.
Для этого существует команда crontab -e. Она автоматически генерирует таблицу в директории /var/spool/cron.
Вновь созданный файл будет пустым текстовым полем. Необходимо добавлять в него все параметры самостоятельно с нуля, опираясь на синтаксис сrontab (более подробно поговорим о нем ниже). После ввода параметров нужно сохранить параметры редактора, нажав на клавишу F2, а затем покинуть конфигурационный файл, нажав на клавишу F10. При введении корректных параметров в терминале отобразится строка crontab: installing new crontab.
Опытные разработчики и системные администраторы не рекомендуют использовать для редактирования расписания текстовые редакторы в духе Nano, Emacs или Vi. Команды crontab позволяют не только внести изменения в таблицу запланированных задач, но и перезапустить фоновый процесс crond, отвечающий за работу утилиты после сохранения настроек.
Ограничения Cron
У Cron есть функция установки ограничений на использование, задающихся через два специальных файла: cron.allow и cron.deny.
Первый файл находится в директории /usr/lib/cron/cron.allow и содержит в себе список учетных записей (имен пользователей), которые имеют право на планирование задач с помощью встроенных системных утилит.
Второй файл находится в директории /usr/lib/cron/cron.deny. В нем указываются имена пользователей, которые не могут запускать встроенный в систему планировщик задач.
Если первого файла не существует, то любой пользователь может планировать задачи с помощью встроенного в систему планировщика, но только при условии, что его имени нет во втором файле. Если удалить оба файла, то каждый пользователь сможет планировать задачи без ограничений.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Синтаксис crontab
# crontab -e SHELL=/bin/bash MAILTO=mymail@someprovider.com PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin # Детали смотрите в следующих разделах # Примеры оформления задач в планировщике (формат данных): # .---------------- минуты (0 - 59) # | .------------- часы (0 - 23) # | | .---------- дни месяца (1 - 31) # | | | .------- сами месяцы (1 - 12) OR jan,feb,mar,apr . # | | | | .---- дни недели (0 - 6) (0 или 7 это воскресенье в зависимости от настроек системы) можно использовать сокращения типа mon,tue,wed,thu,fri,sat,sun # | | | | | # * * * * * имя пользоваться команда, которую нужно запустить # создание копии всей операционной системы с помощью кастомного скрипта 01 01 * * * /usr/local/bin/bckp -vbd1 ; /usr/local/bin/bckp -vbd2 # установка соответствия между временем операционной системы и "железа" 03 05 * * * /sbin/hwclock --systohc # проведение обновления операционной системы в заданный период времени 25 04 1 * * /usr/bin/apt-get update
Первые три линии кода в таблице отвечают за первичную настройку. Сначала указывается оболочка, в которой будет работать Cron. У утилиты нет каких-либо предпочтений, поэтому можно указать любую на собственное усмотрение (в нашем примере это bash). Затем указывается адрес электронный почты, на который будут отправляться отчеты о работе планировщика. И напоследок указывается путь к окружению.
Ниже находятся параметры, используемые для запуска процессов в определенный период времени. В комментариях описан базовый синтаксис, включающий в себя формат времени, имя пользователя и команду, которая должна быть запущена.
В нашем случае указаны команды:
02 04 5 * * /usr/local/bin/bckp -vbd1 ; /usr/local/bin/bckp -vbd2 04 06 * * * /sbin/hwclock –systohc 10 05 5 * * /usr/bin/apt-get update 05 * * * * rm /home/myusername/tmp/*
Примеры использования Cron в командной строке
02 04 5 * * /usr/local/bin/bckp -vbd1 ; /usr/local/bin/bckp -vbd2
создает в таблице расписания задачу на запуск скрипта под названием bckp (представим, что такой существует), который создает резервную копию всей системы на стороннем накопителе. Он выполняется 5 числа каждого месяца в 4 часа 2 минуты утра. Это видно по числовым значениям. Звездочки же указывают на отсутствие конкретного значения. Cron воспринимает их как «выполнять каждый раз», то есть каждый месяц, день или неделю.
04 06 * * * /sbin/hwclock –systohc
меняет время аппаратного обеспечения на то, что используется в системе. Делает это каждый день, каждую неделю и каждый месяц в 6 часов 4 минуты утра. Как видите, здесь пропущено третье значение. Поэтому команда и запускается ежедневно, так как нет более конкретных правил.
10 05 5 * * /usr/bin/apt-get update
запускает обновление пакетов с помощью пакетного менеджера apt каждый месяц 5 числа в 05:10.
05 * * * * rm /home/myusername/tmp/*
удаляет содержимое папки с временными файлами для конкретного пользователя (меня) на пятой минуте (первый пункт) каждого часа. Так как определенные значения отсутствуют для всех остальных пунктов, получается, что скрипт готов выполняться каждый день, каждый месяц и каждый час. Но первое значение указано, поэтому он будет дожидаться пятой минуты и запускаться в этот момент. То есть в 12:05, 13:05, 14:05 и т.п.
Как видите, разобраться с базовыми командами несложно.
Другие примеры настройки Cron
На примере команды для удаления временных файлов разберем пару-тройку нестандартных настроек расписания.
К примеру, некоторые показатели можно вводить не в виде цифр, а в виде сокращенных слов. Чтобы запускать удаление временных файлов каждую пятницу в 4 часа вечера, необходимо ввести в crontab:
00 16 * * Fri rm /home/myusername/tmp/*
Если не указывать в планировщике точных вводных, то выбранный скрипт будет выполняться каждую минуту:
* * * * * rm /home/myusername/tmp/*
Можно заставить планировщик выполнять задачу только в определенные месяцы. Чтобы запускать удаление временных файлов 1 февраля, 1 мая и 1 сентября в половину первого ночи, необходимо ввести в crontab:
30 00 1 2,5,9 * * rm /home/myusername/tmp/*
Некоторые скрипты необходимо выполнять только по будням, поэтому в Cron есть возможность исключить некоторые дни недели из расписания:
00 16 * * 1–5 rm /home/myusername/tmp/*
Часы тоже можно делить. Например, запускать ту или иную задачу каждые 3 часа. Для этого нужно поставить слэш в графе с установкой времени по часам:
*/5 */2 * * * rm /home/myusername/tmp/*
Вместо заключения
О работе с Cron стоит знать еще пару важных вещей.
Во-первых, всегда указывайте корректный почтовый адрес в параметрах. Это позволит собирать информацию о запускаемых по расписанию задачах. В этих письмах содержится и информация о возникающих ошибках. Во-вторых, при указании «исполнителя» в панели управления Timeweb важно делать корректный выбор, чтобы он соответствовал запускаемой задаче. В-третьих, информацию о работе Cron можно собирать в отдельный файл с помощью команд в духе:
30 18 * * * rm /home/myusername/tmp/* > /home/myusername/cronlogs/clean_tmp_dir.log
На этом все. Следуйте инструкциям, не путайте порядок параметров и внимательно изучайте журнал ошибок, если что-то пойдет не так. После недолгой практики вы поймете, что работать с Cron не так уж и сложно!
Планировщик Cron: чем полезен и как использовать в веб-разработке
Cron — программа-демон в операционных системах семейства UNIX. Она умеет выполнять задания на сервере с заданной периодичностью. Благодаря Сron веб-разработчик может упростить себе работу и автоматизировать почти любые задачи: от стандартного бэкапирования до более сложных. Я с помощью Сron проверял и убирал битые ссылки на сайте радиостанций. Немного расскажу об этом опыте, а прежде — о том, как настроить Сron вручную через консоль или в панели ISPmanager, если вы не хотите хлопот с командной строкой.
Настройка Cron вручную в консоли
- crontab -l выводит на экран содержимое текущего файла расписания активного пользователя — того, кто в данный момент авторизован в системе;
- crontab -r удаляет текущий файл расписания;
- crontab – e выводит на экран содержимого текущего файла расписания для редактирования.
Чтобы добавить в crontab новую задачу, нужно прописать в crontab строку, в которой указано время выполнения команды и сама команда или ссылка на скрипт, который нужно выполнить.
Структура одной строки crontab-файла выглядит следующим образом:

Структура одной строки crontab-файла
В каждой строке шесть параметров, разделяемых пробелами.
В первых пяти параметрах задаётся время выполнения команды или сценария: минута, час, день, месяц, день недели. Допускается ввод этих значений в виде:
- числа;
- списка чисел, разделённых запятыми;
- диапазона чисел, разделённого дефисом;
- символы * или /. Знак * означает, что задание выполняться каждый раз в указанный период. Например, такое задание: * * * * * [команда для выполнения] будет выполняться каждую минуту. Чтобы настроить периодичность, например, каждые десять минут, нужно добавить к этой записи знак / и указать число: */10 * * * * [команда для выполнения] — запуск задания каждые 10 минут.
Время и дата для выполнения берётся относительно времени и даты, установленными на сервере, где выполняется задание Cron.
Шестым параметром задаётся команда для выполнения.
Для ручного создания команд Cron существуют сервисы crontab-генераторов. Они упрощают жизнь начинающим пользователям:
- crontab.guru — хороший ресурс для тех, кто ещё мало знаком с планировщиком. Здесь можно изучать синтаксис команд и примеры cron-задач.
- crontab-generator.org— генератор команд. Достаточно ввести нужные данные в форму, и сайт сгенерирует команду для планировщика. Её можно вставить в crontab-файл, открыв её командной crontab -e, либо сохранить в файл или вообще отправить на e-mail.
Если же вы пользуетесь ISPmanager, вводить команды в crontab вовсе не нужно — их можно задать через форму прямо в панели. Расскажу об этом способе работы с Cron.
Несколько примеров использования Cron в ISPmanager
ISPmanager — панель для управления веб-серверами и сайтами. В неё уже включен инструмент для работы с Cron. Чтобы запланировать задачи на сервере, не нужно открывать терминал — управление происходит через формы и кнопки в панели.
Пример стандартного содержимого файла crontab пользователя root в ISPmanager:
[[php]] ## ISPmanager acme.sh certs update task 48 3 * * * /usr/local/mgr5/sbin/cron-core sbin/mgrctl -m core [[/php]]
В первой строке указано описание задачи: ## ISPmanager acme.sh certs update task.
Во второй строке указано, что каждый день в 3 часа 48 минут команда /usr/local/mgr5/sbin/cron-core sbin/mgrctl будет выполнена с параметрами -m core acmesh.certs.update. Надпись >/dev/null 2>&1 означает, что отчёт о выполнении команды не будет отправлен на почту пользователя.
Команда выполняется каждые 5 минут:
[[php]] ## ISPmanager task which collect system statistics */5 * * * * /usr/local/mgr5/sbin/cron-core sbin/mgrctl -m core sysinfostat >/dev/null 2>&1[[/php]]
Чтобы не прописывать в crontab-файле все эти команды вручную, можно зайти в ISPmanager в раздел Планировщик и отредактировать уже существующее задание, либо создать новое:

Так выглядит раздел со всеми созданными задачами планировщика
Как я наладил работу сайта радиостанций с Cron
Мне довелось использовать Cron для автоматизации проверки доступности многих интернет-ресурсов.
Работая в веб-студии, мы разрабатывали сайт-агрегатор радиостанций. Сайт представлял из себя набор ссылок на потоковые аудио вещающих интернет-радиостанций.
Время от времени радиостанции прекращали вещание на неопределённый срок. Из-за этого на сайте появлялись битые неработающие ссылки. Нужно было круглосуточно проверять их раз в два или три часа. Для этого сервер сайта обращался по каждой ссылке и проверял пришедший в ответ код. Если он получал код 200, значит всё в порядке, и ссылка работает. Все остальные коды означают, что ссылка нерабочая. Такую радиостанцию с сайта-агрегатора нужно убирать и не показывать посетителям до тех пор, пока ссылка вновь не станет возвращать код 200.
Чтобы избавиться от ручной проверки порядка семи сотен ссылок, я использовал Cron. Написал скрипт на PHP, который проверял доступность ссылок на аудиопотоки, и запускал его каждые два часа. Команда выглядела так:
[[php]] * */2 * * * php check-radios.php >/dev/null 2>&1[[/php]]
Я добавил её в Сron через установленный ISPmanager. В типе выполнения задания выбрал Экспертный режим — в нём можно задавать не только конкретное время, день, день недели и месяц, но и периодичность:

Интерфейс создания и редактирования задания в планировщике Cron в панели ISPmanager
После этого созданная задача появилась в разделе Планировщик со всеми заданными параметрами:

Только что созданная с помощью ISPmanager задача в планировщике
Использование Cron в различных CMS
Во многих CMS есть уже встроенные механизмы использования Cron. Они служат для управления задачами по обслуживанию сайта и обычно уже работают из коробки. В основном их используют, чтобы проверять обновления для разных частей системы управления сайтом, будь то модули, ядро системы или поисковая индексация.
Подводные камни Cron и неприятные моменты
Бывают случаи, когда Cron может подвести и не отработать вовремя.
Например, на сервере настроено задание, которое по расписанию раз в день запускает сбор данных для последующей обработки. Данные очень важны. Но если на сервере что-то произошло в то время, когда задание должно было выполниться — не ответила нужная база данных, сервер перезагружался либо просто не работал из-за обычного сбоя электричества, — то Cron бессилен. Он не сможет отработать и пропустит запуск процесса. Это стоит учитывать: после сбоев задания нужно выполнить вручную или ждать следующего запуска по расписанию.
ISPmanager для управления сайтами и веб-серверами
ISPmanager помогает создавать и администрировать сайты: настраивать среду разработки, автоматизировать DevOps — задачи, делать бэкапы, устанавливать версии PHP, пакеты языков программирования, многое другое. Попробуйте бесплатную версию ISPmanager на 14 дней.
Нас читает уже более 35 000 человек
Подпишитесь и получите скидку 10% на ispmanager!
Выбирайте интересное вам: новости ispmanager, подборка статей для начинающих веб-специалистов, всё для матёрых разработчиков или предложите свой вариант рассылки
Благодарим за интерес к рассылке от ispmanager!
На ваш почтовый адрес: отправлено письмо с просьбой подтвердить свой email.
Сразу после подтверждения почтового адреса мы вышлем вам обещанную скидку за подписку.
*Если вы не получили письмо, пожалуйста, проверьте правильно ли был указан почтовый адрес и попробуйте заполнить форму еще раз.
