Настройка cron на хостинге разберем детали


php Пример работы file put contents и крон cron, cron job



Cron — запуск программ пользователя в указанное время

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

Как настраивать cron в Личном кабинете (для unix-тарифов)

cp.masterhost.ru — Древо услуг — виртуальная площадка u12345 — cron — изменить.

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

Чтобы добавить новые задания, нажмите создать задание. Откроется интерактивный редактор cron-сценариев :

В поле Команда укажите полный путь до скрипта или команду, которая должна выполняться. Например, полный путь до файла script.pl, размещенного в корне Вашей площадки, будет выглядеть так:

Убедитесь, что файл, который Вы хотите запускать, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:

Вы можете выполнять запуск скриптов на языке PHP в указанное время с желаемой периодичностью. Для этого требуется использовать PHP-CLI интерпретатор , пример использования которого описан здесь. Команда на запуск скрипта script.php может выглядеть, например, так:

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget. Например:

Обратите внимание, что путь до утилит нужно указывать полностью, от корня файловой системы. Если в скрипте используются функции require, include, причём в них указаны относительные пути, то в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию.

Далее нужно выбрать периодичность, с которой будет запускаться Ваш сценарий. Вы выбираете один из вариантов в каждой из 5 колонок: минуты (точное значение от 00 до 59 либо период), часы (от 00 до 23 либо период), день, месяц и день недели. Примеры:

выполнять задание раз в час в 05 минут

выполнять задание по понедельникам в 1 час 15 минут ночи

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

Последнее поле – Комментарий – является необязательным. В нем Вы можете указать дополнительные инструкции для crontab – например, почтовый адрес для получения результатов выполнения Вашего скрипта. Для этого в комментарий добавьте такую строку:

Вместо mail@box.ru укажите Ваш почтовый ящик. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую. С помощью комментариев Вы можете установить переменные окружения (HOME, PATH, SHELL и т.д. ).

Когда все поля будут заполнены (кроме поля комментарий, оно необязательное), нажмите Добавить и Сохранить изменения .

Как настраивать cron в Личном кабинете (для windows-тарифов)

Напишите заявку из Личного кабинета в отдел Техподдержка.

Как настраивать cron по ssh

Конфигурирование сценариев cron производится через unix shell. Прежде всего нужно определить, какие программы Вы хотите запускать и узнать полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу с помощью команды pwd. Путь может выглядеть, например, как /home/u12345/scripts/script.pl. Убедитесь, что файл, который Вы хотите запускать, имеет права на чтение+исполнение (r+x) для владельца файла.

Поменять права на нужные можно командой:

Далее выполните команду crontab -e. Вы окажетесь в текстовом редакторе vi, где сможете вводить текст сценария для cron. Краткая справка по редактору vi:

  • для вставки текста нажмите i, затем вводите текст
  • для удаления символов нажмите ESC, а затем наберите x
  • для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
  • для сохранения и выхода нажмите ESC, а затем наберите :wq

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нужно нажать enter — иначе задания работать не будут.

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

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

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

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно. Символ * означает «все возможные значения». Например, указание * в поле «часы» будет означать «запускать каждый час». Символ / служит для указания дополнительной периодичности задания. Например, */3 в поле «часы» означает «каждые три часа».

Примечание: если определены оба поля день месяца и день недели (т.е не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

Итак, как выглядит простейший сценарий cron:

Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введя такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования, и, если Вы не допустили ошибок, задание будет поставлено на выполнение с указанной периодичностью. Если при редактировании были допущены ошибки, cron сообщит Вам о них.

Исправьте ошибки и попробуйте сохранить задание опять.

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

Рекомендация: если требуется запускать какую-то программу один раз в день, особенно если она требует для выполнения больших ресурсов, выполняйте такое задание ночью, в период с 2 до 8 часов — нагрузка на серверы в это время минимальна.

Примеры использования cron

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

Как запускать PHP-скрипты по расписанию

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

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget. Например:

Если в скрипте используются функции require, include, причём в них указаны относительные пути, то в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию.

Как получать сообщения об ошибках от программ, запускаемых cron

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

Конечно, адрес@домен.ru нужно заменить на реально существующий адрес электронной почты куда надо будет доставлять уведомления. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую.

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

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

Полностью строка для cron будет выглядеть так:

Рекомендуем проверять корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку, могут неодинаково работать при запуске через веб-сервер и через cron, и так далее. Для того, чтобы убедиться, что скрипт будет правильно работать через cron, предварительно проверьте его такой командой в unix shell:

Если ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».

Ограничения

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

Планировщик CRON. Как его установить и как им пользоваться - инструкция

Многие пользователи сталкивались с тем, что некоторые программы необходимо запускать с определенной периодичностью или по расписанию, но делать это вручную удается далеко не всегда. Чаще всего такого рода потребность возникает на серверных машинах. И если на вашем сервере установлена операционная система семейства Unix (Debian, Centos, FreeBSD, Ubuntu), Cron или как еще его называют, демон-планировщик Cron - это то, что вам нужно.

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

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

Установка, принцип работы и настройка Cron

Как правило, в большинстве стандартных дистрибутивов Unix-подобных систем демон-планировщик Cron содержится по умолчанию и устанавливается в составе пакета программ. Он уже присутствует на виртуальном хостинге и любом тарифе виртуальных серверах VPS

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

  • Установка для Red Hat:
    1. Откройте консоль.
    2. Введите yum install vixie-cron.
  • Установка Cron для Debian-подобных систем:
    1. Откройте консоль.
    2. Введите apt-get install cron.

После этого можно считать, что планировщик успешно установлен

Команды Cron и принцип работы планировщика

После запуска ОС планировщик выстраивает очередь задач от всех пользователей. Затем он также дополнительно анализирует, есть ли crontab в /var/spool/cron и соответствуют ли файлы задач информации о пользователях, представленной в /etc/passwd. Важно помнить, что каждой учетной записи доступен один crontab, но при этом в нем можно размещать много задач.

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

Синтаксис crontab имеет такой вид:

С настройками по умолчанию /etc/crontab выглядит так:

05 * * * * root run-parts /etc/cron.hourly

09 9 * * * root run-parts /etc/cron.daily

13 8 * * 0 root run-parts /etc/cron.weekly

58 6 3 * * root run-parts /etc/cron.monthly

Из описанного выше следует, что:

  • задача из /etc/cron.hourly исполняется в пятую минуту каждого часа,
  • задача из /etc/cron.daily будет исполняться ежедневно в девятую минуту девятого часа,
  • задача из /etc/cron.weekly будет исполняться каждое воскресенье на тринадцатой минуте восьмого часа,
  • задача из /etc/cron.monthly исполняется ежемесячно, в третий день на пятьдесят восьмой минуте шестого часа.

SHELL=/bin/bash означает, что команды из bin/bash будут использоваться для запуска Cron. Если же переменная не была указана, то необходимое значение будет позаимствовано из /etc/passwd для всех пользователей.

HOME=/ - указание корневого каталога.

MAILTO=root указывает, кому отправлять рапорт о выполнении задачи. Если результат выполнения вас не интересует, то в конце сценария следует записать Cron dev null, тогда будет приходить только уведомление об успешном завершении работы сценария или же неудачной попытке.

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

Настройка Cron (Centos, FreeBSD, Ubuntu)

Добавить задание в Cron, как и выполнить настройку уже существующего сценария, можно через консоль следующим образом:

  1. Для начала решите, какие программы будут выполняться, а также узнайте путь к ним. Последнее можно сделать, перейдя в каталог с программой и используя команду cd.
  2. Далее, используя команду pwd, посмотрите полный путь к месту размещения нужной программы. При этом убедитесь, что у вас есть права на чтение и исполнение необходимого файла.
  3. Наберите команду crontab -e. После ее выполнения откроется редактор vi, где и будет выполняться настройка Cron относительно отдельно взятого сценария.

Выше уже упоминался формат Cron-команд, который указывается без скобочек и подчиняется следующим ограничениям:

  • в поле [минута] можно вводить значения от 0 до 59,
  • в поле [час] можно вводить значения от 0 до 23,
  • в поле [день] можно вводить значения от 1 до 31,
  • в поле [месяц] можно вводить значения от 1 до 12,
  • в поле [неделя] можно вводить значения от 0 до 7.

Важной особенностью команды Cron является то, что каждому параметру можно задать не одно, а несколько значений. В таких случаях каждое из них задается через запятую. Фактически это будет означать, что задача должна выполняться в каждый отрезок времени. Также можно указать интервал значений, используя значок «-», и это будет означать, что задание необходимо выполнять ежедневно, каждый час или месяц.

Формат Cron предполагает, что в строке содержится только одна команда. При этом после строки (даже если она была единственной) вы должны нажать клавишу Enter, иначе сценарий не будет принят к исполнению. И если вы допустите ошибку при заполнении нового задания, после его сохранения программа укажет вам на нее. Далее все просто - исправляете ошибку и заново сохраняете сценарий.

Напоследок, для лучшего понимания работы планировщика, представим вашему вниманию актуальные примеры crontab для FreeBSD и любых других Unix-подобных систем.

  • Выполнение команды из crontab каждые 5 минут */5 * * * * /home/user1/script.pl
  • Задача будет исполняться каждые 5 часов на 1-й минуте 1 */5 * * * /home/user1/script.pl
  • Выполнение поставленной задачи ежемесячно 1-го числа на 9-й минуте 8-го часа 9 8 1 * * /home/user1/script.pl

Еще одной примечательной особенностью программы является то, что после изменения в сценарии вам не нужно выполнять перезапуск Cron, потому что планировщик подхватывает изменившиеся данные автоматически. Если же сбой все-таки случился, и программа не распознала измененные данные, то Cron reboot можно выполнить через терминал при помощи команды sudo /etc/init.d/cron restart. После перезапуска все изменения наверняка будут отмечены планировщиком.

У вас остались вопросы относительно работы демоном-планировщиком Cron или все еще не слишком понятен синтаксис crontab для Ubuntu или любой другой Unix-системы? Вы можете обратиться за помощью к сотрудникам нашей техподдержки. Одним из многочисленных преимуществ использования хостинга от RigWEB является не только стабильность серверов, но и квалифицированные специалисты, которые всегда готовы ответить на ваши вопросы и оказать поддержку в решении любых вопросов в рамках своей компетенции.

Пользуйтесь профессиональным хостингом от RigWEB и достигайте максимальной продуктивности при работе над своими проектами!

Настройка cron на хостинге,

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

Правильная настройка планировщика заданий Cron

Задания для Cron можно описать так - это несколько строк (одна строка - одно задание), в которых указывается периодичность запуска и команда (которая означает, что собственно нужно запустить):

30 3 * * 2 /yourdirectory/myscript.pl

Минуты Часы ДеньМесяца Месяц ДеньНедели Команда

Минуты - задается числом от 0 до 59

Часы - задается числом от 0 до 23

ДеньМесяца - задается числом от 1 до 31

Месяц - задается числом от 1 до 12

ДеньНедели - 1 - Понедельник, 2 - Вторник, 3 - Среда, 4 - Четверг, 5 - пятница, 6 - Суббота, 7 - Воскресенье

Таким образом в нашем примере (30 3 * * 2 /yourdirectory/myscript.pl) задние означает, что нужно каждый вторник, в 3 часа 30 минут ночи запускать файл /yourdirectory/myscript.pl

Также в каждом из полей мы можем использовать:

Написание через запятую: 2,5,16 - если написать такое в поле Часы, то задание будет запускаться в 2 часа ночи, в 5 часов утра и в 16 часов.

Интервал: 5-9 - если написать в это в поле Минуты, то задание будет запускаться каждую минуту в период с 5 по 9 мин.

Дополнительная периодичность: /4 - если написать такое в поле часы, то это будет означать что запуск будет происходить каждые 4 часа.

Важно! Звездочка (*) - означает все возможные значения! Таким образом, неопытный вебмастер который решит, что для запуска задания 1 числа каждого месяца достаточно написать * * 1 * * /yourdirectory/myscript.pl натыкается на то, что задание будет запускаться каждую минуту, в каждом часу.

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

Важно! /yourdirectory/myscript.pl - это должен быть абсолютный путь к файлу, а сам файл должен иметь определенные права доступа (минимум - право на выполнение и чтение для владельца файла 644).

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

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

cPanel: Панель управления -> Задания Cron

ISP Manager: Панель управления -> Планировщик (Cron)

Parallels Plesk: Панель управления -> Запланированные задачи

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

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

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

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

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

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

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

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

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

Чтобы посмотреть уже существующие задания для Cron вводим crontab -l

Задания для Cron с полезными примерами

Правила составления Cron-заданий смотрим вверху статьи. Запускать задание каждые 2 часа в 0 минут (каждый день, каждого месяца)

Запускать задание каждый раз после перезагрузки сервера

Запускать задание по средам в 3 часа 20 минут ночи (каждый день, каждого месяца)

20 3 * * 3 /yourdirectory/myscript.pl

Запускать задание 14 марта в 2 часа 10 минут ночи

1 0 14 3 * /yourdirectory/myscript.pl

Запускать задание ежемесячно 1 числа в 3 часа 15 минут ночи (в каждом месяце)

15 3 1 * * /yourdirectory/myscript.pl

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

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

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

-O - означает, что Cron не будет создавать лишние файлы, а будет работать через консоль. Это позволяет избежать захламления сервера.

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

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

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

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

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

Также, существует еще один способ запуска:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

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

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

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

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

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

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

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

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

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

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

Отзывы

Ратмир
Бронислава
joyceesi
Аза
swicrelack

Написать отзыв

Success! Your message has been sent.