Запустить cron через браузер

Обновлено: 07.07.2024

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

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

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

ЧТО ТАКОЕ ФАЙЛ CRONTAB

Crontab (таблица cron) представляет собой текстовый файл, который определяет расписание заданий cron. Существует два типа файлов crontab. Общесистемные файлы crontab и отдельные пользовательские файлы crontab.

Файлы crontab пользователей именуются в соответствии с именем пользователя, и их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге /var/spool/cron, а файлы Debian и Ubuntu хранятся в каталоге /var/spool/cron/crontabs.

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

/etc/crontab и файлы в каталоге /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.

В большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron., и скрипты будут выполняться каждый час/день/неделю/месяц.

СИНТАКСИС CRONTAB И ОПЕРАТОРЫ

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

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

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

  • * - оператор звездочки означает любое значение или всегда. Если в поле «Час» имеется символ звездочки, это означает, что задание будет выполняться каждый час.
  • , - оператор запятой позволяет указать список значений для повторения. Например, если у вас есть 1,3,5 в поле Час, задание будет выполняться в 1, 3 и 5 часов утра.
  • - - оператор дефиса позволяет указать диапазон значений. Если в поле «День недели» указано значение 1–5, задание будет выполняться каждый рабочий день (с понедельника по пятницу).
  • / - оператор косой черты позволяет указать значения, которые будут повторяться в течение определенного интервала между ними. Например, если в поле «Час» указано */4, это означает, что действие будет выполняться каждые четыре часа. Это то же самое, что указание 0,4,8,12,16,20. Вместо звездочки перед оператором косой черты можно также использовать диапазон значений, 1-30/10 означает то же, что и 1,11,21.

ОБЩЕСИСТЕМНЫЕ ФАЙЛЫ CRONTAB

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

ПРЕДОПРЕДЕЛЕННЫЕ МАКРОСЫ

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

  • @yearly (или @annually) - запускать задание один раз в год в полночь (12:00) 1 января. Эквивалент 0 0 1 1 *.
  • @monthly - запускать заданное задание один раз в месяц в полночь первого дня месяца. Эквивалент 0 0 1 * *.
  • @weekly - запускать задание раз в неделю в полночь воскресенья. Эквивалент 0 0 * * 0.
  • @daily - запускать задание один раз в день в полночь. Эквивалент 0 0 * * *.
  • @hourly - запускать заданную задачу один раз в час в начале часа. Эквивалент 0 * * * *.
  • @reboot - Запустить указанное задание при запуске системы (время загрузки).

КОМАНДА CRONTAB

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

  • crontab -e - отредактировать файл crontab или создать его, если он еще не существует.
  • crontab -l - Показать содержимое файла crontab.
  • crontab -r - удалить текущий файл crontab.
  • crontab -i - Удалить текущий файл crontab с запросом перед удалением.
  • crontab -u - Изменить другой файл crontab. Требуются права системного администратора.

Команда crontab открывает файл crontab с помощью редактора, указанного в переменных окружения VISUAL или EDITOR.

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

Чтобы корректно настраивать cron-задания, выберите нужную инструкцию ниже в зависимости от того, установлена ли на вашем сервере панель управления ISPmanager, и следуйте ей:

Настройка cron-заданий на сервере без панели управления ISPmanager

Для просмотра, редактирования и добавления новых задач откройте командную строку и выполните команду: crontab -e

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

Задачи добавляются в формате: минута час день месяц день_недели /путь_к_файлу

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

Комбинация Что это значит? Пример Комментарий
1. символ * Задача будет повторяться каждую минуту, час или день и т.д. * /path/to/file Cron-задание будет запускать задачу каждую минуту.
2. цифра Задача будет запускаться в определённое время. 5 /path/to/file Cron-задание будет запускать задачу каждый час в 05 минут.
3. /цифра Задача запускается с определённым интервалом. /3 * /path/to/file Cron-задание будет запускать задачу через каждые три часа.
Мы рекомендуем указывать абсолютный путь файла, для которого применяется cron-задание, так как переменная path может отличаться у разных пользователей. Как узнать абсолютный путь корневой папки сайта?

Примеры команд для cron-заданий

Запуск задания через get

Используется, если cron-задание должно запускаться с учётом контекста движка:

Запуск задания через wget

Альтернативный вариант запуска cron-задания с учётом контекста движка:

Запуск задания под разными версиями PHP

При добавления cron-задания с помощью команд get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.

Если необходимо выполнять скрипт под другой версией PHP, запустите cron-задание через CLI.

Скрипты можно запускать и через php и через php-cgi. Например:

  • /opt/php/5.4-with-xcache/bin/php-cgi
  • /opt/php/5.4-with-xcache/bin/php

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

Запуск задания через CLI

Cron-задание можно выполнить в командной строке. Например, если требуется запустить скрипт под версией PHP 5.3:

Настройка cron-заданий на сервере с панелью управления ISPmanager Не рекомендуется добавлять задачи от root-пользователя, так как это может негативно сказаться на безопасности вашего сервера.

В разделе «Система» выберите пункт Планировщик и нажмите Создать:

настройка cron-заданий на выделенном сервере 1

В поле «Команда» введите команду, которую необходимо выполнять, ниже установите время запуска задания и нажмите Ok:

настройка cron-заданий на выделенном сервере 2

Готово. После выполнения предыдущего шага вы зададите cron-задание для выбранного файла в панели управления ISPmanager.

Частые ошибки в cron-заданиях

Некорректный путь к исполняемому файлу

Проверьте корректность пути, запустив команду из командной строки сервера (SSH).

Ошибки при запуске планировщика

Проанализируйте лог-файл «var/log/errors.log», чтобы найти причину проблемы. Вы можете получить отчёт о выполнении cron-задания на e-mail. Для этого: в панели управления ISPmanager в разделе «Система» выберите пункт Планировщик. Нажмите Настройки планировщика. На открывшейся странице введите e-mail, на который будут высланы результаты запуска, и нажмите Оk:

настройка cron-заданий на выделенном сервере 3

У консольной версии PHP не подключён ioncube

Проверьте, подключён ли ioncube, запустив cron-команду из консоли сервера.

Используется curl (wget), который не установлен на сервере

Попробуйте оба варианта: с «wget» и с «curl». Мы советуем указывать абсолютный путь к соответствующей утилите curl или wget в команде. Также рекомендуется прописывать URL-адрес файла, а не его системный путь.

Запускается PHP старой версии

Такая ситуация может возникать, если на сервере установлено несколько версий PHP. При добавлении cron-задания с помощью get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.

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

Введение

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

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


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

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

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

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

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


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

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

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

  1. Чтобы выполнять команду каждую минуту, задание должно быть такое:
  2. Похожее задание, только команда будет вызываться каждые пять минут:
  3. Вызывать команду 4 раза в час (каждые 15 минут):
  4. Чтобы выполнить команду каждый час в 30 минут, пишем:

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

  • @reboot — одиночное выполнение команды при загрузке;
  • @yearly — раз в год;
  • @annually — тоже раз в год;
  • @monthly — раз в месяц;
  • @weekly — один раз в неделю;
  • @daily — раз в день;
  • @midnight — тоже раз в день;
  • @hourly — раз в час.

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

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

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

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

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

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

Crontab.guru

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


Сайт Crontag buru

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

Crontag Generator


Сайт Crontab Generator

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


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

Cron: настройка и запуск

Размещая сайт, мы желаем добиться бесперебойной работы без нашего участия.

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

Cron - программа, демон для автоматического запуска программ и скриптов на сервере в необходимое время.

Crontab в панели управления Timeweb

Crontab в панели управления Timeweb

Если ваш аккаунт оплачен, и вас не уличили в спам-рассылке, то раздел Crontab доступен и работоспособен:

Интерфейс Crontab в панели управления Timeweb дружелюбен и интуитивно понятен: даже начинающие пользователи, до этого не имевшие опыта работы с cron, легко разберутся в том, как создавать задачи. Создав задачу, вы сможете в автоматическом режиме делать бэкапы, рассылки, чистить кэш и выполнять другие типовые действия.

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

После основной информации я расскажу о нюансах, которые важно учитывать при работе с cron.

В разделе Crontab создаются новые задачи. Для этого потребуется заполнить поля:

Нюансы

Небольшие нюансы, о которых стоит помнить при работе с cron.

1. Cron работает, если аккаунт оплачен и нет ограничений.

Проверить статус можно создав файл с расширением php (например twtest.php) с кодом:

И обратившись к файлу в браузере.

В браузере увидите информацию:

uid=12345(login) gid=600(customers) groups=600(customers) - говорит о том, что cron и почта доступны

uid=12345(login) gid=600(customers) groups=601(newcustomers),600(customers),660(spammers) - пишем в поддержку

2. Файл, который запускаете, должен иметь права на чтение и исполнение (r+x).

По умолчанию файлы на хостинге создаются с правами 600. Поменять права на нужные можно по ssh командой:

3. Дабы не захламлять e-mail лишними письмами, настройте часто исполняемые скрипты на запись лога в файл , а не в консоль.

CRON по SSH

Настройка планировщика по ssh описана столько раз, что нового рассказать не получится.

Подключение по ssh подробно описано в справочном центре Timeweb:

После подключения, прочтите статью с информацией о командах ssh:

После прочтения надо найти файл со скриптом, перемещаясь между директориями командой cd. Найдя файл введите pwd и скопируйте путь (пример "/home/c/cc123456/public_html/test/")

Если не знаете какие права у файла введите:

При подключении по ssh редактировать задачи можно командой

В первый раз сервер попросит выбрать редактор:

Система указывает на простой редактор nano под цифрой 2. Если не рассчитали силы или случайно выбрали vi, не пугайтесь, нажмите Esc, затем введите двоеточие q и нажмите enter.

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

и выберете nano.

Задания пишутся по строкам. Пример:

Значения первых пяти значений:

  • 1 минуты — число от 0 до 59
  • 2 часы — число от 0 до 23
  • 3 день месяца — число от 1 до 31
  • 4 номер месяца в году — число от 1 до 12
  • 5 день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Далее указываем путь до интерпретатора. На серверах Timeweb по умолчанию установлена версия php 5.3. Наш предполагаемый скрипт работает на 5.6. Указать требуемую версию php так:

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

Нюансы

  1. При изменении в панели управления в разделе "Crontab" удалятся изменения записей сделанных по ssh!
  2. Если определены оба поля "день месяца" и "день недели" , то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 9 часов 19 минут каждую среду и каждое 7 число месяца, даже если 7 число не совпадает со средой.

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

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

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

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

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

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

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

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

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

  • /home/c/cc123456/tmp/twtest.sh - наш скрипт проверки
  • /opt/php56/bin/php - путь до нужного интерпретатора
  • /home/c/cc123456/tmp/twtest.php - путь до нашего скрипта

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

Заключение

Теперь вы знаете, как работать с cron и автоматически запускать задачи. Более подробную информацию о cron ищите в "man cron". Удачи!

Читайте также: