Планирование сценария R
Я написал скрипт R, который извлекает некоторые данные из базы данных, выполняет несколько операций над ними и публикует результаты в новой базе данных.
Мне бы хотелось, чтобы этот скрипт запускался каждый день в определенное время, но я не могу найти способ сделать это эффективно.
Кто-нибудь может порекомендовать ресурс, на который я мог бы посмотреть, чтобы решить эту проблему? Я запускаю этот скрипт на компьютере с Windows.
6 ответов
На самом деле под Windows вам даже не нужно сначала создавать командный файл, чтобы использовать планировщик.
- Откройте планировщик: ПУСК -> Все программы -> Аксессуары -> Системные инструменты -> Планировщик
- Создать новое задание
- на вкладке Action создайте новое действие
- выберите Начать программу
- перейдите к Rscript.exe, который должен быть размещен, например, здесь:
"C: \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe" - введите имя вашего файла в поле параметров
- введите путь, где должен быть найден скрипт, в поле Start in
- перейдите на вкладку Триггеры
- создать новый триггер
- выбрать, что задание должно выполняться каждый день, месяц,... повторяться несколько раз или как угодно
Предположим, ваш R скрипт mytest.r
, находится в D:\mydocuments\
Вы можете создать командный файл, включающий следующую команду:
C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r
Затем добавьте его, как новую задачу, в планировщик задач Windows, установив там условия запуска.
Вы также можете опустить пакетный файл. Задавать C:\R\R-2.10.1\bin\Rcmd.exe
в program/script
текстовое поле в планировщике задач, и дать как Arguments
остальная часть начальной команды: BATCH D:\mydocuments\mytest.r
Планирование задач R с помощью планировщика задач Windows (Опубликовано 11 февраля 2015 г.)
taskscheduleR: пакет R для планирования сценариев R с помощью диспетчера задач Windows (Опубликовано 17 марта 2016 г.)
Теперь для этого есть встроенная опция в RStudio, для запуска планировщика сначала установите следующие пакеты
install.packages('data.table')
install.packages('knitr')
install.packages('miniUI')
install.packages('shiny')
install.packages("taskscheduleR", repos = "http://www.datatailor.be/rcube", type =
"source")
После установки перейдите в
**TOOLS -> ADDINS ->BROWSE ADDINS ->taskscheduleR -> Select it and execute it.**
Настройка планировщика задач
Шаг 1) Откройте планировщик задач (Пуск> поиск в планировщике задач)
Шаг 2) Нажмите "Действие" > "Создать задачу".
Шаг 3) Выберите "Запускать только при входе пользователя в систему", снимите флажок "Запускать с наивысшими привилегиями", назовите свою задачу, настройте для "Windows Vista/Windows Server 2008"
Шаг 4) На вкладке "Триггеры" укажите, когда вы хотите, чтобы сценарий запускался.
Шаг 5) На вкладке "Действия" укажите полное расположение файла Rscript.exe, т.е.
"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)
Поместите имя вашего скрипта с помощью -e
а также source()
в аргументах, обертывающих это так:
-e "source('C:/location_of_my_script/test.R')"
Устранение неполадок Rscript, запланированного в планировщике заданий
Когда вы запускаете сценарий с помощью Планировщика заданий, трудно устранять какие-либо проблемы, потому что вы не получаете сообщений об ошибках.
Это можно решить, используя sink()
функция в R, которая позволит вам выводить все сообщения об ошибках в указанный вами файл. Вот как это можно сделать:
# Set up error log ------------------------------------------------------------
error_log <- file("C:/location_of_my_script/error_log.Rout", open="wt")
sink(error_log, type="message")
try({
# insert your code here
})
Еще одна вещь, которую вам нужно будет изменить, чтобы ваш Rscript заработал, - это указать полный путь к любому файлу в вашем скрипте.
Это не будет работать в планировщике задач:
source("./functions/import_function.R")
Вам нужно будет указать полный путь к файлу любых сценариев, которые вы используете в своем Rscript:
source("C:/location_of_my_script/functions/import_function.R")
Я установил свои задачи через SCHTASKS
программа. Для запуска скриптов при запуске вы должны написать что-то вроде
SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"
Смотрите этот сайт для более подробной информации о SCHTASKS
, Более подробная информация на веб-сайте Microsoft.
После выполнения любой комбинации этих шагов, и вы получите "Argument Batch Ignored"
ошибка после запуска R.exe, попробуйте это, у меня сработало.
В планировщике задач Windows:
замещать BATCH "C:\Users\desktop\yourscript.R"
в поле аргументов
с
CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"