- Cron — запуск программ пользователя в указанное время
- Как настраивать cron в Личном кабинете (для unix-тарифов)
- Как настраивать cron в Личном кабинете (для windows-тарифов)
- Как настраивать cron по ssh
- Примеры использования cron
- Как запускать PHP-скрипты по расписанию
- Как получать сообщения об ошибках от программ, запускаемых cron
- Ограничения
- Запуск программ по расписанию. Использование CRON.
- Как указывать путь к запускаемому через crontab файлу?
- Проблемы с запуском программы по CRON-у
- Планировщик CRON
- Как добавить новую задачу на хостинге Linux
Cron — запуск программ пользователя в указанное время
В ОС Unix существует возможность запускать программы пользователя в указанное им время. Для этого используется программа cron, которая получает инструкции от пользователей и, следуя им, производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.
Как настраивать cron в Личном кабинете (для unix-тарифов)
cp.masterhost.ru — Услуги — виртуальная площадка — СRON.
Здесь Вы увидите список Ваших сценариев. Их можно редактировать, остановить на время выполнение или удалить окончательно:
Чтобы добавить новые задания, заполните поля в интерактивном редакторе 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 выглядит как строка, в начале находятся пять обязательных полей для указания периодичности задания, а далее следует команда, которую нужно запускать:
Значения первых пяти полей:
- минуты — число от 0 до 59
- часы — число от 0 до 23
- день месяца — число от 1 до 31
- номер месяца в году — число от 1 до 12
- день недели — число от 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, возникли ошибки, наверняка вы захотите получать сообщения об этих ошибках, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в комментарий добавьте такую строку:
Конечно, адрес@домен.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.
Большинство хостеров предлагают возможность запуска программ по расписанию. Т.е. Вы можете автоматически выполнять некоторые свои программы через определенные интервалы времени. Напимер каждые 30 минут или каждый день. Это бывает очень полезно для проведения обслуживания вашего сайта. Так называемых регламентных операций, например очистка папки с временными файлами, очистка и сжатие базы данных.
Каждая строка в файле /etc/crontab имеет следующий формат:
minute hour day month dayofweek command
- minute — любое целое число от 0 до 59
- hour — любое целое от 0 до 23
- day — любое целое от 1 до 31 (день должен быть корректным, если указан месяц)
- month — любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)
- dayofweek — любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)
- command — команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc , или команда запуска написанного вами специального сценария.
Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.
Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.
Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.
Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать / . Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.
Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.
Как указывать путь к запускаемому через crontab файлу?
Например, 0 4 * * * путь
/public_html/cgi-bin/&
/home/w/windows/public_html/cgi-bin/&
Символ & в конце строки является необязательным элементом и указывает, что программу нужно запустить в фоновом режиме
Символ
обозначает путь от корня к домашнему каталогу пользователя
Проблемы с запуском программы по CRON-у
Если Вы действительно правильно указали путь, проверьте формат файла скрипта. Скрипты, запускаемые через crontab, должны быть сохранены в формате Unix. Речь идет о формате конца строки. Он должен быть таким, как принято в системах Unix — LF (вместо CRLF, использующегося в DOS и Windows или CR в системах Macintosh).
В первой строке PHP файла, запускаемого по Cron-у обязательно указание пути до интерпретатора PHP:
Или укажите команду для cronа php путь до файла или GET ссылка на файл.
Еще одна проблема, по которой может не выполняться PHP скритпт по крону, это неверные атрибуты файла. Установите флаг выполнения -rwxr-xr-x
Примеры cron заданий: 0 */3 * * 2,5 /home/u12345/script.php — Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу.
0 * * * * /home/u12345/script.php — выполнять задание каждый час в 0 минут
0 */3 * * * /home/u12345/script.php — выполнять задание каждые три часа в 0 минут
15 1 * * 1 /home/u12345/script.php — выполнять задание по понедельникам в 1 час 15 минут ночи
1 0 5 4 * /home/u12345/script.php — выполнять задание 5 апреля в 0 часов 1 минуту каждый год
13 13 13 * 5 /home/u12345/script.php — выполнять задание в пятницу 13 числа в 13 часов 13 минут
10 6 1 * * /home/u12345/script.php — выполнять задание ежемесячно 1 числа в 6 часов 10 минут
30 3 * * mon hello выполнить команды hello каждый понедельник в 3:30
10 4 1 * * hello — выполнить команду hello в первый день каждого месяца в 4:10
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1 — выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
0 22 * * 1-5 echo «Пора домой» | mail -s «Уже 22:00» john — каждый рабочий день в 22:00
23 */2 * * * echo «Выполняется в 0:23, 2:23, 4:23 и т. д.»
5 4 * * sun echo «Выполняется в 4:05 в воскресенье»
0 0 1 1 * echo «С новым годом!»
15 10,13 * * 1,4 echo «Эта надпись выводится в понедельник и четверг в 10:15 и 13:15»
0-59 * * * * echo «Выполняется ежеминутно»
*/5 * * * * echo «Прошло пять минут» — каждые 5 минут
Т.к. при запуске по cron-у php программы не будут определены системные перемнные такие как $_SERVER вы можете использовать мой прием, который позволит Вам не мучаться с отладкой таких CRON-скриптов. Вставьте в самое начало php скрипта следующий код:
Источник
Планировщик CRON
Cron (Command Run ON) — планировщик задач. Используется для выполнения команд и скриптов на сервере хостинга в определённое время. Планировщик cron доступен после заказа услуги хостинга Linux или Windows.
Как добавить новую задачу на хостинге Linux
Управлять заданиями планировщика можно в панели управления веб-хостингом.
В разделе «Главное» выберите пункт Планировщик и нажмите Создать:
- Команда — введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже,
- Описание — введите описание,
- Расписание — выберите тип расписания и в оставшихся полях задайте периодичность выполнения задания.
В разделе «Расширенный» нажмите Запланированные задания:
В поле Общие параметры задайте период выполнения задания, а в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже. Нажмите Добавить новое запланированное задание:
Перейдите в раздел «Сайты и домены». Нажмите Планировщик задач:
Нажмите Добавить задачу:
Выберите Тип задачи:
- Если вы выбрали Выполнить команду, в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже;
- Если вы выбрали Получить URL-адрес, в поле URL-адрес укажите URL-адрес, где находится скрипт. При этом команду писать не нужно;
- Если вы выбрали Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту относительно папки виртуального сервера, а в поле Аргументы укажите аргументы скрипта, если они есть. В поле Использовать версию PHP выберите версию PHP.
Заполните остальные поля, они одинаковы для всех типов задач:
Запустить — выберите в раскрывающемся списке периодичность выполнения задания и назначьте время исполнения,
Описание — введите описание,
Уведомлять — выберите тип уведомлений.
Готово, вы добавили новую задачу в планировщике cron.
Источник