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


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

Примеры базового режима настройки периодичности запуска:

Примеры экспертного режима настройки периодичности запуска:

Когда все поля будут заполнены (кроме поля «Описание», оно необязательное), нажмите «ОК».

 

Отправка отчетов на 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:

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

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

поле1 поле2 поле3 поле4 поле5 команда

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

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 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

Как запустить 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

Настройка Cron в ISPmanager 5

Перейдите в раздел Система → Планировщик.

 

Создайте новую задачу с помощью одноименной кнопки. Заполните поля в открывшемся редакторе:

«Команда»: выполняемая команда или полный путь до скрипта (не обязательно для системных команд).

Для файла script.sh:

/home/script/script.sh

 

Проверьте, что файл доступен для исполнения и чтения владельцу. Если таких прав нет, добавьте их с помощью:

/home/script/script.sh

 

«Описание»: необязательное поле-напоминание о том, что выполняет сценарий.

 

«Расписание»: повторяемость сценария. Доступна в двух вариантах:

 

1. Базовый — выбор из доступных вариантов: каждый час, при запуске и др. Например, запуск задачи по средам в 2 часа 45 минут ночи.

2. Экспертный — вы настраиваете периодичность исполнения команды самостоятельно. Например, запуск задачи 10 августа в 2 часа 2 минуты каждый год.

Когда заполните все обязательные поля, кликните ОК.

E-mail отчёты о выполнении расписания

Чтобы получать уведомления о выполнении заданий, зайдите в Планировщик → Настройки → Адрес e-mail и укажите свою почту.

 

Проверьте, чтобы в настройках самой задачи не было галочки в поле «Не отправлять отчёт по e-mail».

Настройка Cron по ssh

Cron записывает расписание запуска программ в конфигурационный файл. Посмотреть и отредактировать его можно из командной строки с помощью текстового редактора:

 

# crontab -l

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

 

# crontab -u имя_пользователя -l

— посмотреть список заданий для указанного логина.

 

# crontab -e

— отредактировать список заданий для текущего пользователя. Используйте ключ -u имя_пользователя, чтобы отредактировать другой список для другого логина.

 

#crontab -r

— удаляет очередь заданий.

 

Задания выглядят так:

Минуты Часы Число месяца № месяца в году День недели (— вос. это 0 и 7 одновременно) Команда

— всё параметры через пробел.

 

Например, такое задание:

25 5 25 2 7 /home/script/script.sh

Сценарий выполнится в 05:25 25-ого февраля в воскресенье.

 

Чтобы задать несколько значений сразу, пишите их через запятую. Чтобы задать интервал, используйте тире.

 

59 4-9 5,7,31 1 0 /home/script/script.sh

Такое задание будет запускаться каждый час с 4:59 по 9:59 5-ого, 7-ого и 31-ого января в воскресенье, даже если дата и день недели не совпадают.

 

* — все возможные значения. В поле дни * означает запуск каждый день./ — дополнительная периодичность. “*/4” в поле дни — запуск каждые 4 дня.

44 17 3 * 7 /home/script/script.sh

Такой сценарий будет выполняться в 17:44 по воскресеньям и 3-его числа, даже когда этот день недели и дата не совпадают.

 

Чтобы сценарий выполнялся при запуске системы, вместо даты, месяца и т.д. пропишите @reboot:

@reboot /home/script/script.sh

 

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

Как запускать PHP-скрипты в нужное время

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

/usr/bin/php -q /home/script/script.php > /dev/null 2>&1

 

Но для многих скриптов локальное исполнение не подходит. Загрузите такой файл с помощью wgett.

/usr/bin/wget -O /dev/null -q http://мойсайт.рф/script.php

Как настроить уведомления об ошибках

Чтобы отслеживать ошибки при выполнении программ, пропишите в начале cron-сценария:

MAILTO=адрес@домен.ru, где «адрес@домен.ru» — email для уведомлений, можно указать несколько через запятую.

 

Поместите в конце сценария /dev/null 2>&1, если не хотите видеть вывод исполняемого скрипта в уведомлении. В Cron это будет выглядеть так:

0 1 * * * /usr/bin/php -q /home/script/script.php > /dev/null 2>&1

 

Удостоверьтесь, что синтаксис скриптов корректен — воспользуйтесь командой

/usr/bin/php -l script.php

Если всё в порядке, вы увидите: «No syntax errors detected in script.php».

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

Запускать скрипты от имени суперпользователя — серьезная уязвимость. Чтобы не произошло непоправимого, лучше запускать программы и скрипты от имени пользователя с ограниченными правами.

Дайте нужному пользователю права на выполнение скрипта. В запланированном задании добавьте su -l имя_пользователя

0 1 * * * su -l vasya /usr/bin/php -q /home/script/script.php

Ограничения

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

ispserver.ru

Как настроить запуск R-скрипта по расписанию? — Netpeak Blog

С помощью скриптов R можно быстро и бесплатно собирать данные из API различных сервисов или рекламных площадок и записывать их в базу данных. Но если вы регулярно пользуетесь скриптами, то есть ли смысл каждый раз запускать их вручную?

настроить запуск скриптов R

Я расскажу, как настроить запуск скриптов R с определенным интервалом в операционной системе Windows.

1. Как добавить путь к R-консоли в переменную окружения PATH?

PATH — переменная окружения Unix-подобных операционных систем, DOS, OS/2 и Microsoft Windows, представляющая собой набор директорий, в которых расположены исполняемые файлы. В основном, каждый выполняемый процесс или сеанс пользователя имеет собственную переменную PATH.

Эта инструкция относится к операционным системам Windows 8 и 10, но вы без проблем можете найти подробные руководства и для любой другой версии Windows.1.1. В строке «Поиск» найдите «Система (Панель управления)» и нажмите на ссылку «Дополнительные параметры системы».

 найдите «Система (Панель управления)»

1.2. В окне свойств системы нажмите на кнопку «Переменные среды...».

нажмите на кнопку «Переменные среды...»

1.3. В разделе «Переменные среды» кликните на переменную PATH и нажмите «Изменить». Если переменной PATH не существует, нажмите «Создать».

В разделе «Переменные среды»

1.4. Добавьте в переменную путь к папке с файлом «R.exe».

Добавьте в переменную путь к папке

2. Создайте bat-файл

Bat-файл, по сути, похож на файл с расширением exe, но его код более простой и состоит из некоторых командных строк.

Создать bat-файл довольно просто. Можно записать команду запуска в обычный текстовый файл с расширением TXT, сохранить его и поменять расширение на «.bat». Я опишу другой способ — создание bat-файла с помощью бесплатного блокнота Notepad++.

2.1. Откройте Notepad++ (скачать его можете по ссылке).

2.2. Введите следующую команду:

@echo off R CMD BATCH C:\R\myscript.R

Команда «@echo off» отключает вывод сообщений в командной строке при работе скрипта, вы можете изменить эту команду на «@echo on» и наблюдать за выполнением скрипта в ходе его работы.

Команда «R CMD BATCH» запускает выполнение R скрипта.

Во второй строке вместо «C:\R\myscript.R» пропишите путь к вашему файлу со скриптом R.

В результате файл будет выглядеть так:

Создайте bat-файл

2.3. Сохраните созданный текстовый файл с расширением BAT. Для этого в меню Notepad++ выберите пункт «Файл» — «Сохранить как» — «Batch file (bat, cmd, nt)».

созданный текстовый файл с расширением BAT

3. Настройте запуск R-скрипта в фоновом режиме

Если вы не хотите, чтобы при автозапуске R-скрипта на экране появлялось окно командной строки, то скомпилируйте ваш bat-файла в exe — в таком случае скрипт будет работать в фоновом режиме и не будет вам мешать.

3.1. Скачайте бесплатную утилиту «Bat To Exe Converter» по ссылке.

3.2. Укажите bat-файл, который необходимо скомпилировать, а также путь и название будущего exe-файла.

Настройте запуск R-скрипта в фоновом режиме

3.3. В области «Видимость приложения» установите переключатель в положение «Невидимое приложение».

В положение «Невидимое приложение»

3.4. При желании установите иконку для вашего файла.

Чтобы установить иконку, перейдите на вкладку «Информация о версии» и с помощью кнопки «...» выберите нужную иконку в поле «Файл значка».

В качестве иконки можете использовать любое изображение в формате ICO или же нарисовать самостоятельно в бесплатном онлайн-редакторе.

Установите иконку для вашего файла

Нажмите кнопку «Компилировать».

4. Настройте планировщик задач Windows

Заключительный этап настройки — добавить задачу в планировщик задач Windows.

Планировщик задач Windows — встроенная утилита (аналог линуксового CRON), с помощью которой можно запланировать в определенное время с заданными условиями:

4.1. Чтобы открыть планировщик задач, скопируйте в адресную строку открытой папки путь «%windir%\system32\taskschd.msc /s».

открыть планировщик задач

4.2. В правой части планировщика выберите пункт «Создать задачу...».

выберите пункт «Создать задачу...»

4.3. На вкладке «Общие» в диалоговом окне «Создание задачи» введите название и при необходимости краткое описание.

введите название и краткое описание

4.4. На вкладке «Триггеры» настройте расписание запуска скрипта: нажмите «Создать» и установите, к примеру, повтор запуска скрипта каждый понедельник в 12:45.

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

4.6. Далее перейдите на вкладку «Действие» и нажмите «Создать». В выпадающем списке «Действие» кликните на пункт «Запуск программы» и в области «Программа или сценарий» выберите bat-файл, созданный ранее.

выберите bat-файл, созданный ранее

На этом процесс настройки запуска R скриптов по расписанию закончен. Если вы все сделали правильно, в списке появится новая задача.

в списке появится новая задача

Вывод

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

Алгоритм действий:

  1. В переменной окружения PATH пропишите путь к консоли R.
  2. Создайте скрипт R, который будет выполнять нужные действия (например, сохранять результат в файл формата CSV или записывать в базу данных).
  3. Создайте bat-файл, в котором будет прописан путь к скрипту R.
  4. Скомпилируйте ваш bat-файла в exe, чтобы он запускался в фоновом режиме и не отвлекал от работы.
  5. В планировщике задач Windows добавьте повторяющееся задание на запуск bat-файла и установите определенный интервал времени.

Обрабатывать огромные массивы данных, агрегировать и передавать их в любые базы — просто и быстро, если вы правильно организовали свою работу.

netpeak.net

Cron - точно по расписанию.

В наших материалах посвященных Ubuntu Server время от времени затрагивается вопрос выполнения каких либо задач по расписанию. Чтобы не объяснять каждый раз одно и тоже мы решили создать данный материал, который должен помочь системным администраторам освоить и эффективно использовать планировщик задач в Linux.

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

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

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

crontab -e

При первом запуске утилита предложит выбрать редактор, мы рекомендуем выбирать mcedit (требует установленного mc), либо другой редактор, с которым вы умеете работать.

Формат строк расписания имеет вид:

минута час день месяц день_недели команда

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

Рассмотрим следующий пример записи:

0 8-19/2 * * 1 /home/ivanov/test

Она означает что каждый второй час с 8 до 19 (8, 10,12,14,16) по понедельникам запускать скрипт test в домашнем каталоге Иванова.

Сразу хотим предостеречь вас от распространенной ошибки, при указании периодического исполнения все даты должны быть указаны явно, звездочка обозначает полный диапазон значений, а не их отсутствие. Например если вам требуется исполнять некий скрипт каждый час с 10 до 15 неправильно будет:

* 10-15 * * * /home/ivanov/test

Данная строка приведет к запуску скрипта каждую минуту в диапазоне с 10 до 15 часов. Правильно будет:

0 10-15 * * * /home/ivanov/test

Данная запись позволит запускать скрипт в начале каждого часа указанного диапазона.

Кроме даты можно использовать ряд специальных строк:

Так для ежедневного исполнения нашего скрипта каждую полночь можно написать:

@midnight /home/ivanov/test

Завершив составление расписания сохраняем файл и выходим из редактора. Пользовательское расписание будет сохранено в /var/spool/cron/crontabs под именем текущего пользователя.

Для системных и административных задач предусмотрен файл /etc/crontab синтаксис записей в нем отличается наличием дополнительного значения - пользователя, от чьего имени будет запущено задание:

минута час день месяц день_недели пользователь команда

Пример такой записи:

0 19 * * 1-5 root /etc/backup

Согласно которой в 19:00 с понедельника по пятницу будет запускаться скрипт /etc/backup от имени пользователя root.

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

Как видим cron достаточно прост в использовании, но в тоже время предоставляет богатые возможности по настройке расписаний в Ubuntu Server. Надеемся данная статья поможет администраторам освоить данный инструмент.

interface31.ru

Настройка запуска нескольких php скриптов по расписанию.

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

Как известно, для запуска по расписанию команд в UNIX-подобных операционных системах используется утилита cron. В данном случае речь идет об ОС FreeBSD.

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

Чтобы все работало как задумано, нужно разместить команды вызова скриптов в исполняемом файле (UNIX shell - .sh).

Подключитесь к серверу по протоколу SSH и создайте .sh-файл в домашней директории. Можно создать какую-нибудь папку внутри домашней директории.

Существует несколько вариантов запуска скриптов: кроме простого запуска, есть возможность сохранения результатов работы скрипта в файл, либо отправки их на e-mail.

• Запуск скрипта - результаты никуда не сохраняются и не отправляются:

# /usr/local/bin/wget -O /dev/null -q http://domen/path/file.php

• Запуск скрипта с сохранением результатов его работы в файл:

# /usr/local/bin/wget -O путь к файлу -q http://domen/path/file.php

В моем случае «путь к файлу» такой /home/m/mattweb/

• Запуск скрипта с отправкой результатов его работы на e-mail (результаты работы в файл не сохраняются):

# /usr/local/bin/wget -O - -q http://domen/path/file.php | /usr/bin/mail [email protected]

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

# locate wget

Затем нужно сделать этот файл исполняемым:

# chmod +x имя_файла.sh

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

Формат команды следующий:

минута час день_месяца месяц день_недели команда

Допустимые значения:

Каждое из полей даты и времени может быть обозначено символом * - будет соответствовать любому возможному значению. Также для этих полей можно указывать диапазоны значений, разделенные дефисом.

Почитать о crontab в FreeBSD

Примеры команд в Ubuntu

mattweb.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта