Cron — настройка, правила и примеры команд. Как настроить крон на хостинге
Настройка Cron | Losst
Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. Это очень удобно, вы просто запускаете скрипт, и он делает все что необходимо без вашего вмешательства. Следующий шаг в этом пути — настроить автоматически запуск нужного скрипта в нужное время.
Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.
Содержание статьи:
Как работает Cron?
Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab, в котором указаны все нужные данные. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:
- /etc/cron.minutely — каждую минуту;
- /etc/cron.hourly — каждый час;
- /etc/cron.daily — каждый день;
- /etc/cron.weekly — каждую неделю;
- /etc/cron.monthly — каждый месяц.
В этих папках должны находиться скрипты, которые нужно выполнять с указанным интервалом. Скрипты должны иметь права на выполнение и их имя не должно содержать точки. Это очень сильно облегчает работу с планировщиком для новых пользователей. Также в файле crontab прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в длительный период, например, раз в день, неделю, месяц, год.
Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.
Настройка Cron
Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:
crontab -e
Ее всегда желательно выполнять с опцией -e, тогда для редактирования правил будет использован ваш текстовый редактор по умолчанию. Команда открывает вам временный файл, в котором уже представлены все текущие правила cron и вы можете добавить новые. После завершения работы команды cron файл будет обработан и все правила будут добавлены в /var/spool/cron/crontabs/имя_пользователя причем добавленные процессы будут запускаться именно от того пользователя, от которого вы их добавляли.
Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становиться причиной проблем.
Синтаксис crontab
Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:
минута час день месяц день_недели /путь/к/исполняемому/файлу
Нужно сказать, что обязательно нужно писать полный путь к команде, потому что для команд, запускаемых от имени cron переменная среды PATH будет отличаться, и сервис просто не сможет найти вашу команду. Это вторая самая распространенная причина проблем с Cron. Дата и время указываются с помощью цифр или символа ‘*’. Этот символ означает, что нужно выполнять каждый раз, если в первом поле — то каждую минуту и так далее. Ну а теперь перейдем к примерам.
Примеры настройки cron
Сначала можно посмотреть задачи cron для суперпользователя, для этого можно воспользоваться опцией -l:
crontab -l
Вы можете удалить все существующие задачи командой -r:
crontab -r
Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример — запускать его каждую минуту:
* * * * * /usr/local/bin/serve
Далее, усложним, будем запускать каждый час, в нулевую минуту:
0 * * * * /usr/local/bin/serve
Еще дальше:
Запускаем в нулевую минуту нулевого часа, каждый день, это в 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 минут. Для этого используется разделитель косая черта — «/»:
*/10 * * * * /usr/local/bin/serve
Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:
- @reboot — при загрузке, только один раз;
- @yearly, @annually — раз год;
- @monthly — раз в месяц;
- @weekly — раз в неделю;
- @daily, @midnight — каждый день;
- @hourly — каждый час.
Например, вот так просто будет выглядеть команда запуска скрипта раз в час:
@hourly /usr/local/bin/serve
Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:
sudo vi /etc/corn.daily/basckup
#!/bin/bash
......
Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.
Отладка работы
После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:
Она должна выполняться в 19.40 каждый день, теперь смотрим лог:
grep CRON /var/log/syslog
И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.
Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:
sudo run-paths /etc/cron.daily/
Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.
Выводы
В этой статье мы рассмотрели как выполняется настройка cron для удобного планирования автоматических задач. Надеюсь, эта информация была полезной для вас.
losst.ru
Как добавить задание в Cron? — Вопросы и ответы — Джино
Задание надо добавлять в контрольной панели «Джино» в разделе «Хостинг / Управление / Задания по расписанию».
Нажмите на кнопку «Новое задание» и в строке «Задание» введите путь к скрипту (если это исполняемый файл):
~/папка_со_скриптом/файл_скрипта.sh > /dev/null
Или вызов программы php или curl для запуска PHP-скриптов:
phpX.X ~/папка_со_скриптом/файл_скрипта.php > /dev/nullcurl -s 'http://ваш-домен.ru/папка_со_скриптом/файл_скрипта.php' > /dev/null
(Здесь X.X — это версия PHP, которая вам необходима. Например, для PHP 5.6 команда будет выглядеть так: php5.6. Рекомендуется использовать ту же версию PHP, на которой работает ваш сайт. Ее можно узнать в разделе «Хостинг / Управление / Настройки веб-сервера / Настройки PHP» контрольной панели.)
Способ с использованием php более предпочтителен: в этом случае не будет накладных расходов на установку HTTP-соединения и отправку запроса, обработка скрипта не будет занимать процесс веб-сервера, и на него не будут действовать некоторые ограничения ресурсов.
Если вы хотите получать на E-mail результаты работы скрипта, во-первых, задайте для этого E-mail внизу страницы, и во-вторых, удалите из строки окончание «> /dev/null».
В полях: «Минуты», «Часы», «Дни», «Месяцы» и «Дни недели», надо указать, когда и с какой периодичностью должно запускаться ваше задание. Формат всех этих полей идентичен: можно указать либо конкретные значения, разделив их запятыми, либо диапазон, разделив граничные значения дефисом, либо интервал в формате «*/N», где N — продолжительность интервала. Чтобы задание выполнялось, например, каждый день или каждый месяц, в соответствующее поле нужно поставить символ «звездочку».
Минуты: 1,20 — скрипт будет выполняться только каждую первую и двадцатую минуты.Часы: 0-4 — скрипт будет выполняться только с 0 часов до 4 часов включительно. Например, если в поле «Минуты» будет стоять «*», то скрипт будет выполняться каждую минуту с 0:00 до 4:59.Дни: * — скрипт будет выполняться каждый день.Месяцы: */2 — скрипт будет выполняться только каждый второй месяц.Дни недели: 1-5 — скрипт будет выполняться только с понедельника по пятницу (воскресенье можно обозначать цифрами 7 или 0).
Примеры заданий:
Пример №1.Чтобы ваш скрипт выполнялся ежедневно в 10:30 и 22:30, нужно задать следующие значения полей:Минуты: 30Часы: 10,22Дни: *Месяцы: *Дни недели: *
Пример №2.Чтобы ваш скрипт выполнялся каждые 15 минут, нужно задать следующие значения полей:Минуты: */15Часы: *Дни: *Месяцы: *Дни недели: *
Пример №3.Чтобы ваш скрипт выполнялся в начале каждого часа, но только в воскресение, нужно задать следующие значения полей:Минуты: 0Часы: *Дни: *Месяцы: *Дни недели: 7
www.jino.ru
Установка CRON задания на хостинге REG.RU [Документация AMX MONITORING]
1. Покупаем хостинг на сайте reg.ru
Я выбирал тариф Host-1 ( дешевые не пробывал типа Host-Lite, но не уверен что он там будет работать) Добавляем домен и т.д… Думаю разберетесь
2. Узнаем правильную команду для CRON
Пишем в техническую поддержку reg.ru (думаю найдете где писать)
Примерно следующее содержание:
Здравствуйте. Можете дать правильную CRON команду для планировщика заданий URL сайта: ваш_сайт.ru Файл для CRON: ваш_сайт.ru/cron/game_cron.php Логин в системе: Login Ип сервера: ip_serveraВ ответ Вам пришлют примерно следующий ответ
/opt/php/5.3/bin/php-cgi -f /var/www/vhosts/u000001.plsk.regruhosting.ru/httpdocs/site.ru.ru/cron/game_cron.php3. Заходим в панель управления
4. Заходим в планировщик
5. Создаем CRON Задание
Заполняем примерно так же, поле «Команда» вставить команду которую Вам дал хостер
Нажимаем ок и сохраняем
6. Завершение
Вам должно было выдать вот такое
После этого добавляем еще одно задание для файла other.php, просто в команде замените game_cron.php на other.php, выставляем время 1 час И нажмите OK
Обязательно нужно защитить эти 2 файла, читаем инструкцию дальше
Открываем файл .htaccess, он находится в корне мониторинга.
И видим там строки
##<Files cron/other.php> ## deny from all ##</Files> ##<Files cron/game_cron.php> ## deny from all ##</Files>И раскоментируем их, т.е делаем вот так
<Files cron/other.php> deny from all </Files> <Files cron/game_cron.php> deny from all </Files>Поздравляю CRON настроен
manual/cron/reg_ru.txt · Последние изменения: 19:18 21/01/2018 (внешнее изменение)
wiki.amxservers.ru
Cron — запуск программ пользователя в указанное время
В Unix-подобных ОС существует возможность запускать программы пользователя в указанное им время. Для этого используется планировщик задач cron, который получает инструкции от пользователей и производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.
Как настроить cron средствами панели ISPmanager 5
Настраивайте cron-сценарии через панель управления в разделе Система → Планировщик
Чтобы добавить новые задания, нажмите «Создать». Откроется интерактивный редактор cron-сценариев:
В поле «Команда» укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:
/var/www/u12345/data/www/script.plУбедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:
chmod 750 script.plВ поле «Описание» вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий
Далее выберите периодичность, с которой будет запускаться Ваш сценарий. Есть два варианта настройки — базовый и экспертный.
Базовый — вы выбираете один из перечисленных вариантов в строке «Выполнить»: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно, при запуске.
Экспертный — гибкая настройка периодичности запуска: минуты, часы, дни месяцев, месяцы, дни недели (0 - воскресенье). Формат ввода: * - все минуты; */n - каждые n минут; n - с началом минуты n; a,b,c-e - с началом минут a,b,c,d,e
Примеры базового режима настройки периодичности запуска:
- выполнять задание по понедельникам в 1 час 15 минут ночи
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год
Примеры экспертного режима настройки периодичности запуска:
- выполнять задание раз в час в 05 минут
- выполнять задание по понедельникам в 1 час 15 минут ночи
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год
Когда все поля будут заполнены (кроме поля «Описание», оно необязательное), нажмите «ОК».
Отправка отчетов на email о выполнении сценария
Для настройки уведомлений укажите email, на который будут приходить уведомления о выполнении сценария. Для этого перейдите в раздел «Планировщик»
Нажмите на кнопку «Настройки» и в поле «Адрес e-mail» укажите email, на который необходимо отправлять уведомления о выполнении сценариев.
В настройках сценария убедитесь, что не стоит галочка напротив поля «Не отправлять отчет по e-mail».
Как настроить cron по ssh
Конфигурирование сценариев cron производится через unix shell. Определите, какие программы нужно запустить, и узнайте полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу командой pwd. Путь может выглядеть так — /home/u12345/scripts/script.pl.
Убедитесь, что файл имеет права на чтение+исполнение (r+x) для пользователя, от которого вы запускаете скрипт. Поменять права на нужные можно командой chmod 750 script.pl
750 — полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.
Выполните команду crontab -e – планировщик будет менять план пользователя, от имени которого вы запускаете cron. При первом запуске будет предложен выбор текстового редактора. Выберите редактор с которым вы уже знакомы. Как пример мы рассмотрим текстовый редактор vi. После ввода команды вы окажетесь в текстовом редакторе vi (п), где сможете вводить текст сценария для cron.
Краткая справка по редактору vi:
- для вставки текста нажмите i, затем вводите текст
- для удаления символов нажмите ESC, а затем наберите x
- для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
- для сохранения и выхода нажмите ESC, а затем наберите :wq
Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.
Задание выглядит как строка. В начале находятся пять обязательных полей, разделенных пробелами, для указания периодичности задания. Далее следует команда, которую нужно запускать:
поле1 поле2 поле3 поле4 поле5 команда
Значения первых пяти полей:
- минуты — число от 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 * 5 /home/u12345/script.plтакая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.
Cron позволяет запускать сценарии при загрузке системы — укажите @reboot в начале сценария вместо периодичности запуска:
@reboot /home/u12345/script.plТак выглядит простейший сценарий cron:
0 */3 * * 2,5 /home/u12345/script.plСкрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок.
Cron сообщает об ошибках в сценарии:
/tmp/crontab.xxxxxxx: 1 строка, 9 символов crontab: installing new crontab "/tmp/crontab.xxxxxxx":1: bad minute crontab: errors in crontab file, can't install Do you want to retry the same edit?Исправьте ошибки и попробуйте сохранить задание опять.
Посмотреть список уже установленных в cron сценариев можно командой crontab -l:
-bash-2.05b$ crontab -l 0 */3 * * 2,5 /home/u12345/script.plЕсли вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.
Примеры использования cron
- выполнять задание раз в час в 0 минут — 0 */1 * * * /home/u12345/script.pl
- выполнять задание каждые три часа в 0 минут — 0 */3 * * * /home/u12345/script.pl
- выполнять задание по понедельникам в 1 час 15 минут ночи — 15 1 * * 1 /home/u12345/script.pl
- выполнять задание 5 апреля в 0 часов 1 минуту каждый год — 1 0 5 4 * /home/u12345/script.pl
- выполнять задание ежемесячно 1 числа в 6 часов 10 минут — 10 6 1 * * /home/u12345/script.pl
Как запустить PHP-скрипт по расписанию
Запускайте скрипты на языке PHP в указанное время с желаемой периодичностью с помощью PHP-CLI интерпретатора.Так может выглядеть команда на запуск скрипта script.php — /usr/bin/php -q $HOME/script.php> /dev/null 2>&1
Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget:
/usr/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123Указывайте путь до утилит полностью, от корня файловой системы. Если в скрипте используются функции require, include, в которых указаны относительные пути — в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию. Или воспользуйтесь встроенной командой cd.
@reboot cd /home/u12345 && ./script.plКак получить сообщения об ошибках от программ, запускаемых cron
Вы можете получать сообщения об ошибках при выполнении программ, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в начале cron-сценария поместите такую строку:
MAILTO=адрес@домен.ru, где «адрес@домен.ru» — это адрес электронной почты, куда придут уведомления. Чтобы указать несколько адресов, введите их через запятую.Вы будете получать письмо с тем, что выводят скрипты каждый раз, когда cron запускает задачу. Если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron — вы будете получать письмо со строкой «Hello, world» каждый раз, когда cron запустит такой скрипт.
Если текст, выводимый скриптом, вам не нужен — добавьте в конец строки-сценария для cron символы > /dev/null 2>&1
Полностью строка для cron будет выглядеть так:
0 1 * * * /usr/bin/php -q $HOME/script.php > /dev/null 2>&1Проверьте корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку и работать неодинаково при запуске через веб-сервер и через cron, и так далее. Перед запуском проверьте скрипт командой в unix shell:
/usr/bin/php -l script.phpЕсли ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».
Как запустить сценарий от имени пользователя
Для повышения безопасности системы скрипт запускают от имени определённого пользователя. Убедитесь, что у пользователя есть права на запуск скрипта. Укажите перед основной частью скрипта su -l имя_пользователя, от которого хотите запустить скрипт.
Например, для запуска сервера TeamSpeak3 от имени пользователя ts3server используется следующая команда:
su -l ts3server ./ts3server_startscript.sh startСкрипт расположен в домашнем каталоге пользователя, куда мы автоматически попадаем при авторизации.
Ограничения
Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.
firstvds.ru
Как настроить планировщик задач Cron при помощи Crontab в Linux? Читай статью на 1Cloud
В инструкции описано использование планировщика Cron с помощью утилиты Crontab в Linux.
Что это такое?
Cron - системный демон, используемый для выполнения задач (в фоновом режиме) в указанное время.
Crontab - команда, которая используется, для управления планировщиком Cron. Команда crontab создает файл crontab, содержащий команды и инструкции для запуска демона cron.
Конфигурационные файлы
Следующие файлы ограничивают доступ к планировщику (по умолчанию они не существуют):
- /etc/cron.allow - если существует, пользователи указанные в этом файле имеют возможность запуска заданий планировщика;
- /etc/cron.deny - если существует, пользователи указанные в этом файле НЕ имеют возможность запуска заданий планировщика.
Если cron.allow существует, только юзерам, перечисленным в нем, разрешено использовать cron, при этом файл cron.deny игнорируется. Если cron.allow не существует, юзерам, указанным в cron.deny, не разрешается использовать планировщик cron.
Формат записей в обоих файлах - одно имя пользователя в каждой строке. Пробелы не разрешены.
Файлы контроля доступа считываются каждый раз, когда пользователь пытается добавить или удалить задачу cron.
Параметры команды Crontab
crontab -e | Редактирование или создание файла расписания для текущего пользователя |
crontab -l | Вывод содержимого расписания текущего пользователя |
crontab -r | Удаление файла расписания текущего пользователя |
crontab -u user | Работа с расписаниями конкретных пользователей. Доступно только суперпользователю< |
Каждая запись в crontab состоит из шести полей, указываемых в следующем порядке:
minute(s) hour(s) day(s) month(s) weekday(s) command(s)Поля разделяются пробелами или знаками табуляции. Первые пять представляют собой числовые значения, а шестое - это команда, которая будет выполняться. В следующей таблице кратко описывается каждое из полей:
Поле | Диапазон значений | Описание |
minute | 0-59 | Минута запуска команды |
hour | 0-23 | Час запуска |
day | 1-31 | Число (день) запуска |
month | 1-12 | Месяц запуска |
weekday | 0 - 6 | День недели запуска (воскресенье = 0, понедельник = 1, вторник = 2 и т.д.) |
command | Последовательность команд для выполнения. Это могут быть команды, исполняемые файлы (например, скрипты) или комбинации файлов. |
Примечание: значение первых пяти полей может быть либо * (звездочкой), что означает все допустимые значения, либо списком элементов, разделенных запятыми. Элемент является либо числовым, либо диапазоном чисел, обозначенным двумя значениями, разделенными тире (например, 10-12).
Примеры использования
Запуск скрипта каждый понедельник в 9:00 и 18:00 часов:
0 9,18 * * 1 /home/ivan/script.shЗапуск скрипта каждый день в 0:30 и 12:30:
30 */12 * * * script.shЗапуск команды каждый месяц 1 числа в 12:00:
0 12 1 * * commandЗапуск скрипта в полночь с понедельника по пятницу:
0 0 * * 1-5 /home/ivan/script.shP. S. Другие инструкции:
Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже
1cloud.ru
Cron - настройка выполнения php-команд
Быстрая навигация по этой странице:
Продвинутым пользователям часто бывает необходимо запускать какой-либо php-скрипт автоматически в заданное время. Это может требоваться для самых разных причин.
Например, в WordPress один из самых популярных плагинов для карты сайта — Google XML Sitemaps, работает только в момент публикации поста, при этом если вы делаете отложенную публикацию, то он пост в карту сайта не включает и не включит до тех пор, пока вы не опубликуете через админку какой-либо пост без отложенной публикации.
То есть, если у вас на каком-то сайте настроена отложенная публикация на месяц вперед, то xml карта сайта в этот период обновляться не будет. Решить эту проблему можно, если один раз в день будет выполняться php-скрипт, запускающий этот плагин (написать такой скрипт несложно, но это тема для отдельной статьи). Другой пример — написать скрипт, который будет раз в день проверять наличие новых комментариев и информировать вас по email. Еще один пример — произвести раз в сутки парсинг какой-нибудь RSS-ленты для наполнения сайта контентом. И так далее.
Вот для запуска таких команд и требуется cron: настройка выполнения php-скриптов занимает не более пяти-десяти минут, а польза потом будет ежедневная!
Запуск через веб-интерфейс
Сейчас практически все уважающие себя хостеры предоставляют веб-интерфейс для установки настроек cron. Разумеется, он бывает разным у разных провайдеров, но в целом везде одна и та же система — вам необходимо прописать путь к скрипту (как правило, прописывается полный путь от локального каталога на хосте), а также задать периодичность.
Например, на хостинге IHC задать команду cron можно с помощью следующей формы:
Как видите, задать время можно достаточно удобным способом через выпадающую форму.
Если вам нужно задать какое-то особое время, отсутствующее в предложенных вариантах — например, запускать cron каждые 5 минут, то нужно прописать подробную команду такого типа:
*/5 * * * * /usr/bin/php/home/дальнейший_путь_к_скрипту_/ваш_скрипт.phpЗвездочками помечены временные параметры в следующем порядке:
- минуты (0-59)
- часы (0-23)
- дни (1-31)
- месяцы (1-12)
- дни недели (0-7, при этом воскресенье можно задать и нолем, и семеркой)
Соответственно, если стоит звездочка — то она означает все часы (дни, месяцы и т.д.).
Правила и примеры выполнения команд cron
Все команды cron должны соответствовать следующим правилам:
- должны быть указаны все параметры, если нечего указать — тогда ставится звездочка (вспоминается robots.txt — там тоже действуют строгие правила, неважно ucoz это или wordpress)
- через дробь задается периодичность: */10 = 1 раз в десять минут (или, например, часов)
- можно указать несколько вариантов через запятую: 1,3,10 — в первую, третью и десятую минуты
Рассмотрим на конкретных примерах:
Выполнять скрипт каждый понедельник в 12:30 (путь к файлу указан для примера, в реальности он будет разным на разных хостингах)
30 12 * * 1 /usr/bin/php/home/дальнейший_путь_к_скрипту_/ваш_скрипт.phpВыполнять скрипт каждый день в 13, 18 и с 20 до 23 часов:
0 13,18,20-23 * * * /usr/bin/php/home/дальнейший_путь_к_скрипту_/ваш_скрипт.phpКак видите, через cron php запускать достаточно несложно — главное, следовать вышеуказанным правилам!
www.runcms.org
Документация — Установка. 5. Настройка cron
Что такое крон (cron)?
Это инструмент на вашем хостинге, который позволяет запускать скрипты по расписанию. Установка cron необходима для того, чтобы статистика по переходам трекера своевременно обновлялась.
Cron на хостинге не разрешает устанавливать обновление 1 раз в минуту. Что делать?
Вы можете использовать обновление 1 раз в 2 минуты или 1 раз в 5 минут. Задержка при обновлении данных будет немного больше, но на другую функциональность это не повлияет.
Если в cron поставить */15 вместо */1, это повлияет только на частоту обновления статистики о переходах?
Да.
Хостер добавляет к cron дополнительные символы, это критично?
К примеру, /home/admin/data/server.ru/track-show/process_clicks.php >/dev/null 2>&1
Это не принципиально.
Сильно ли нагружает ресурсы сервера запуск cron каждую минуту?
Короткий ответ
1. Крон не грузит сервер, так как крон это всего лишь расписание, когда запускать ваш скрипт.
2. Сервер грузит регулярное выполнение вашего скрипта. Потребление ресурсов скриптом зависит от количества данных, которые он должен обработать. В нашем случае это количество переходов в минуту.
3. Да, это может быть чрезмерно затратно по ресурсам, зависит от того что делает скрипт и от того, сколько ресурсов вам выделил хостер.
Полный ответ
Запуск любых скриптов - приводит к определенной затрате ресурсов сервера. Регулярный запуск скриптов увеличивает эту нагрузку на количество запусков.
Была нагрузка в 1 единицу, запустили 60 раз в час - стала 60 единиц. Если хостер определяет нагрузку как количество потраченных ресурсов сервера за день или месяц - при регулярном выполнении скриптов вы можете выйти за какие-нибудь лимиты хостера.
Вам необходимо выяснить каким образом самостоятельно мониторить статистику загрузки вашего хостинга и настроить интервалы для запуска крона исходя из этого. Может быть вам достаточно обновления статистики раз в 5 минут (это всего 12 раз а час) или даже 10 минут (6 раз в час).
Количество ресурсов, которые потребляет скрипт за один запуск зависит от того, какое количество информации ему нужно обрабатывать. Если у вас за 5 предыдущих минут было несколько тысяч или несколько десятков тысяч переходов, для того чтобы их обработать и записать в базу - потребуется определенное время и ресурсы. Кроме этого, для определения страны посетителя также используются операции чтения из файлов, что тоже может считаться вашим хостером как потребление ресурсов.
Итак, общий принцип. Каждый запуск ест ресурсы. Чтобы снизить общее потребление можно а) уменьшить затраты на каждый запуск. Для этого нужно создавать меньше данных, то есть лить через трекер меньше трафика. б) уменьшить количество запусков. Для этого интервал для запуска крона делаем больше (5 минут, 10 минут, 30 минут, 1 час или даже больше, если вам не нужна оперативная информация и вы все равно смотрите статистику за прошлый день). Однако, от того что вы запускаете скрипт реже, данных которые он должен обработать не становится меньше. Мы выигрываем только на накладных расходах, которые не зависят от количества данных.
Общепринятой рекомендацией считается запуск подобного рода скриптов (трекеры, tds) на VPS или выделенных серверах. Так как любой простой из-за исчерпания ресурсов или каких-то проблем у хостера с вашими скриптами стоит вам вполне конкретных денег, впустую потраченных на рекламу или трафик.
При выполнении cron на почту приходят уведомления PHP Notice
Отключите ошибки cron. Это можно сделать дописав к строке > /dev/null 2>&1
www.cpatracker.ru