R 스크립트 예약


113

데이터베이스에서 일부 데이터를 가져 와서 여러 작업을 수행하고 출력을 새 데이터베이스에 게시하는 R 스크립트를 작성했습니다.

이 스크립트를 매일 특정 시간에 실행하고 싶지만이를 효과적으로 수행 할 방법을 찾을 수 없습니다.

누구든지이 문제를 해결하기 위해 내가 볼 수있는 리소스를 추천 할 수 있습니까? 이 스크립트를 Windows 컴퓨터에서 실행하고 있습니다.

답변:


108

실제로 Windows에서는 Scheduler 를 사용하기 위해 배치 파일을 먼저 만들 필요조차 없습니다 .

  • 스케줄러 열기 : 시작-> 모든 프로그램-> 액세서리-> 시스템 도구-> 스케줄러
  • 새 작업 생성
  • 작업 탭에서 새 작업을 만듭니다.
  • 시작 프로그램 선택
  • 위치해야하는 Rscript.exe 를 찾습니다 ( 예 :
    "C : \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe").
  • 매개 변수 필드에 파일 이름을 입력하십시오.
  • 시작 위치 필드 에 스크립트가있는 경로를 입력하십시오.
  • 트리거 탭으로 이동
  • 새 트리거 만들기
  • 작업을 매일 , 매달, ... 여러 번 반복하거나 원하는대로 수행해야 함을 선택하십시오.

3
네 감사합니다! 이것은 위의 것이 아니라 웹에 떠 다니는 다양한 다른 답변이 아닌 나를 위해 일한 것입니다. 파일 확장자가 아닌지 확인하기 .R만하면 .r됩니다.
esa606 2014-07-09

그게 정확히 무엇을 의미합니까? 무슨 일이 일어날 것으로 예상합니까? 아마도 이것은 자체 질문으로 들어가야 할 것입니다 (아마도 이미 답변이있을 수 있습니다).
petermeissner

1
DOS 창을 최소화하는 방법이 있습니까?
George Dontas

58

R 스크립트가 mytest.rD:\mydocuments\있다고 가정하면 다음 명령을 포함하는 배치 파일을 만들 수 있습니다.

C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r

그런 다음 Windows 작업 스케줄러에 새 작업으로 추가하여 트리거 조건을 설정합니다.

배치 파일을 생략 할 수도 있습니다. 작업 스케줄러 C:\R\R-2.10.1\bin\Rcmd.exeprogram/script텍스트 상자에 설정 Arguments하고 나머지 초기 명령으로 제공하십시오.BATCH D:\mydocuments\mytest.r

Windows 작업 스케줄러를 통해 R 작업 예약 (2015 년 2 월 11 일 게시)

taskscheduleR : Windows 작업 관리자로 R 스크립트를 예약하는 R 패키지 (2016 년 3 월 17 일 게시)

편집하다

cmd 창을 최소화하기를 원했기 때문에 최근에 배치 파일 사용을 다시 채택했습니다 (다른 방법을 찾을 수 없음).

특히 Actions다음과 같이 Windows 작업 스케줄러 탭을 채 웁니다 .

Program/script:

cmd.exe

Add arguments (optional):

/ c 시작 / min D : \ mydocuments \ mytest.bat ^ & 종료

mytest.bat의 내용 :

C : \ R \ R-3.5.2 \ bin \ x64 \ Rscript.exe D : \ mydocuments \ mytest.r params


16
을 사용하는 Rscript것이 좋습니다 R BATCH. 소문자와 대문자를 구분할 수있는 시스템도 있습니다 r.
Dirk Eddelbuettel

감사합니다. 사용하지 않았습니다. 내가 본 것처럼 인자는 스크립트에 전달 될 수 있고 commandArgs를 사용하여 접근 할 수 있습니다
George Dontas

5

이제이 작업을 수행하는 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.**

여기에 이미지 설명 입력


이것은 나를 위해 작동하지 않습니다. Addin을 실행하려고하면 다음 오류가 발생합니다. Loading required namespace : shiny Failed with error : 'number of columns of matrices must match (arg 2 참조)'Loading required namespace : miniUI Failed with error : 'number of columns of matrices must match (see arg 2) 'Error in rbind (info, getNamespaceInfo (env, "S3methods")) : 행렬의 열 수가 일치해야합니다 (arg 2 참조)
obewanjacobi

이 오류를 수정하기 위해 data.table을 업데이트했으며 이제 다음과 같은 메시지가 나타납니다. 오류 : 네임 스페이스 'data.table'을로드하는 동안 개체 'as.xts'를 찾을 수 없음
obewanjacobi

1
RStudio가 작동하려면 열려 있어야합니까?
cgage1

1
R studio가 닫히면 자동으로 열고 스크립트를 실행합니다.
Zeeshan

4

SCHTASKS프로그램을 통해 작업을 설정했습니다 . 시작시 스크립트를 실행하려면 다음 줄을 따라 무언가를 작성합니다.

SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"

에 대한 자세한 내용 은 이 웹 사이트 를 참조하십시오 SCHTASKS. 자세한 내용은 Microsoft 웹 사이트를 참조하십시오 .



3

작업 스케줄러 설정

1 단계) 작업 스케줄러 열기 (시작> 작업 스케줄러 검색)

2 단계) "작업"> "작업 생성"을 클릭합니다.

3 단계) "사용자가 로그온 할 때만 실행"을 선택하고 "가장 높은 권한으로 실행"을 선택 취소하고 작업 이름을 지정하고 "Windows Vista / Windows Server 2008"을 구성합니다.

여기에 이미지 설명 입력

4 단계) "트리거"탭에서 스크립트 실행시기를 설정합니다.

5 단계) "Actions"탭 아래에 Rscript.exe 파일의 전체 위치를 입력합니다.

"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)

with -esource()in 인수 를 사용하여 스크립트 이름을 다음과 같이 배치합니다.

-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")

1

이러한 단계의 조합을 수행 "Argument Batch Ignored"한 후 R.exe가 실행 된 후 오류가 발생 하면 이것을 시도해보십시오.

Windows 작업 스케줄러에서 :

BATCH "C:\Users\desktop\yourscript.R"인수 필드에서 바꾸기

CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"


1
이것은 Mark Byers의 답변 (또는 그 답변에 대한 편집)에 대한 의견으로 이해가 될 것입니다.
Gregor Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.