R

윈도우 작업 스케줄러에 R script 등록하기

슈퍼짱짱 2020. 3. 5. 19:00
반응형

작업 스케줄러로 R script 자동 실행하기 :: R script로 윈도우 작업 스케줄러 등록하기



자동으로 매일 혹은 매 시간마다 R script를 실행시켜야 할 때가 있다.

그럴 때 윈도우 작업 스케줄러를 활용한다. 


시작 버튼 눌러 작업 스케줄러 검색하고 직접 적용시키는 방법도 있지만, 경로 설정 등의 헷갈리는 부분이 있어서 R script 에서 직접 적용시키는 방법을 소개하고자 한다.


1. 실행하고자 하는 R script를 작성한다.


1
2
3
4
5
png(paste0("PATH",format(Sys.time(), format = "%Y_%m_%d %H_%M_%S"),".png"))
plot(x=1,y=1)
dev.off()
 
print(Sys.time())
cs


현재 시간으로 png 파일을 떨궈주며, print해주는 test.R 파일을 생성했다.




2. 작업 스케줄러에 해당 스크립트 파일을 적용시킨다.


작업 스케줄러에서 직접 적용시킬 수 있으나, path설정이 은근 헷갈린다. R script로 바로 적용하면 path를 자동으로 지정해주는데, 이는 taskscheduleR library에 있는 taskscheduler_create functin으로 구현되어있다.


1
2
3
4
5
6
7
8
9
10
11
12
library(taskscheduleR)
 
telegram.schedule = file.path('PATH/test.R')
 
## 지금으로 부터 10초 뒤 실행하고 2분 마다 재 실행
taskscheduler_create(taskname = 'TEST', rscript = telegram.schedule,
                     schedule = 'MINUTE',
                     starttime = format(Sys.time() + 10, '%H:%M'),
                     startdate = format(Sys.time(), '%Y/%m/%d'),
                     modifier = 2)
 
# taskscheduler_delete('TEST') # 스케쥴 삭제
cs


걸어놓은 작업을 삭제하고 싶을 땐 taskscheduler_delete('TEST') 을 실행시키거나 혹은 작업 스케줄러에서 직접 삭제할 수 있다.


위 코드를 실행시키면 다음과 같은 문구가 return된다. 성공적으로 등록되었다는 뜻이다.


[1] "성공: 예약된 작업 \"TEST\"을(를) 만들었습니다."



작업 스케줄러에 등록되었다.




6분이 지나 스케줄러에 의해 코드가 3번 실행된 모습니다.

지정해 놓은 경로에 png 파일이 잘 저장되었다.





코드를 저장해 놓은 경로에 log파일도 자동으로 생성되었다.




png파일을 저장 할 때 나오는 null device 와, print로 찍어놓은 시간이 잘 찍혀있다.

R 자체에서 실행할 때 return되는 모든 문구들이 log에 찍힌다. 

log를 잘 찍어놓으면, 이후 언제 어디서 error가 발생했는지 알 수 있다.





여기서 끝낼 수도 있으나, 이렇게만 하면 스케줄러에 의해 script가 실행될 때마다 (여기선 2분마다) CMD 창이 잠시 켜졌다 꺼진다. 이를 그냥 두면 굉장히 걸리적거리고 불편하다. 해결할 방법은 다음과 같다.



걸어놓은 작업을 더블클릭한 후 사용자 또는 그룹 변경 Click




선택할 개체 이름에 System 입력 후 확인 Click!


이렇게 하면 등록된 스케줄러는 정상적으로 실행되고, CMD 창은 뜨지않는다.

반응형