공기 품질 예측서비스 - Prototype를 통해 기본 기능 구현이 완료되었다면, 공공데이터 포털의 대기오염 데이터를 자동으로 가져오게 하는 자동화에 한걸음 다가서 보자.
자동으로 작업을 실행시키려면 cron
팩키지를 설치하고 나서 작업(job)을 자동화를 위한 기본적인 명령어를 활용한다.
cron
팩키지 설치유닉스 cron
스케쥴러(scheduler) 팩키지가 윈도우와 유닉스 계열이 달라 사용하는 플랫폼에 맞춰 선택한다.
install.packages("shinyFiles")
::install_github("bnosac/cronR")
devtools
library(cronR)
:::cron_rstudioaddin() cronR
특히, 유닉스 계열 운영체제에서 cronR
팩키지를 설치하게 되면 자동으로 RStduio IDE에 Schedule R scripts on Linux/Unix Addins으로 설치된다. 이를 실행하게 되면 GUI를 통해 cron
작업 전반에 필요한 사항을 숙지하는데 도움이 된다.
윈도우에서는 설치가 되지 않기 때문에 필히 taskscheduleR을 설치하여 동일한 방식으로 자동화 작업을 수행하면 된다.
> devtools::install_github("bnosac/cronR")
/cronR@master
Downloading GitHub repo bnosac://api.github.com/repos/bnosac/cronR/zipball/master
from URL https
Installing cronR"C:/PROGRA~1/R/R-34~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore \
--quiet CMD INSTALL \
"C:/Users/chongmu/AppData/Local/Temp/RtmpK81eEf/devtools3020a967216/bnosac-cronR-cbaab8a" \
--library="C:/Program Files/R/R-3.4.2/library" --install-tests
: Unix-only package
ERROR* removing 'C:/Program Files/R/R-3.4.2/library/cronR'
: Command failed (1) Installation failed
cron
작업 추가가장 먼저 자동화할 작업을 R 스크립트에 작성한다. 그리고 나서 cron_add()
함수를 사용하여 해당 R 스크립트를 지정하여 추가시킨다.
> cron_add("code/hello_script.R", frequency = '*/1 * * * *', id = 'Job ID', description = 'Every 1 min with Script')
: will set the cron schedule as is: '*/1 * * * *'
At your own risk:
Adding cronjob---------------
## cronR job
## id: Job ID
## tags:
## desc: Every 1 min with Script
*/1 * * * * code/hello_script.R
cron
작업 현황 파악cron_njobs()
명령어를 사용하면 전체 돌고 있는 작업목록을 살펴볼 수 있다. cron_ls()
명령어로 상제 작어베 대한 내용도 파악이 가능하다.
> cron_njobs()
3 cronR cron jobs and 0 other cron jobs currently running.
There are a total of > cron_ls()
## cronR job
## id: job_8d92592e3a56eb48cd8f7cc36428a7a9
## tags:
## desc: Hello R Every 1 Minute
0-59 * * * * /usr/lib/R/bin/Rscript '/home/shiny/cron/hello_R.R' >> '/home/shiny/cron/hello_R.log' 2>&1
## cronR job
## id: job_97afd267a753f5bb23f282c0af4511bb
## tags:
## desc: Hello R Every One Minute
0-59 * * * * /usr/lib/R/bin/Rscript '/home/shiny/cron/hello_R.R' >> '/home/shiny/cron/hello_R.log' 2>&1
## cronR job
## id: Job ID
## tags:
## desc: Every 1 min with Script
*/1 * * * * code/hello_script.R
cron
작업 삭제cron_rm(id="job_8d92592e3a56eb48cd8f7cc36428a7a9")
와 같이 앞서 cron
작업 id를 지정하면 자동화 작업 제거가 가능하다.
> cron_rm(id="job_8d92592e3a56eb48cd8f7cc36428a7a9")
1 cron job.
Removed > cron_ls()
## cronR job
## id: job_97afd267a753f5bb23f282c0af4511bb
## tags:
## desc: Hello R Every One Minute
0-59 * * * * /usr/lib/R/bin/Rscript '/home/shiny/cron/hello_R.R' >> '/home/shiny/cron/hello_R.log' 2>&1
## cronR job
## id: Job ID
## tags:
## desc: Every 1 min with Script
*/1 * * * * code/hello_script.R
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com