웹 페이지를 업데이트하기 위해 정기적으로 R 스크립트를 실행하려고합니다. 다음과 같이 터미널에서 호출하면 스크립트가 제대로 실행됩니다.
/usr/local/bin/Rscript /Users/me/path/myscript.R
그러나 cron 작업으로 실행하려고하면 오류가 발생합니다. 다음과 같이 crontab에 작업을 추가합니다.
46 10 * * * /usr/local/bin/Rscript '/Users/me/path/myscript.R' >> '/Users/me/path/mylog.log' 2>&1
스크립트는 R에서 실행되지만 오류로 인해 중단됩니다. 특히 rstan을 사용하여 일부 모델에 적합하고 초기화 오류가 발생합니다. (오류는 일부 모델에만 적용되고 다른 모델은 여전히 정상적으로 실행됩니다.) 초기화 값은 정의에 따라 유효하지만 제대로 사용되지 않는 것 같습니다. rstan이 cron을 통해 실행될 때 수학을 다르게 (그리고 잘못) 수행하는 것과 같습니다.
R의 세션 정보는 터미널에서 스크립트를 실행하든 크론 작업으로 실행하든 동일합니다. 내 질문은 스크립트가 실행되는 방법에 따라 다른 것이 여전히 다를 수 있다는 것입니다. rstan이 cron 작업으로 실행할 때 다른 버전의 C ++를 사용할 수 있습니까? 이것이 올바르게 작동하도록 설정해야 할 다른 경로가 있습니까?
업데이트 : 스크립트는 R CMD BATCH
터미널에서 실행하는 경우에도 작동 하지만 R CMD BATCH
cron 작업에서 사용 하는 경우 에는 작동 하지 않습니다 . 사용 launchd
하면 동일한 문제가 발생합니다. 나는 또한를 CmdStan
통해 사용해 보았고 cmdstanr
똑같은 일이 발생합니다. cron 작업에 추가 될 때까지 잘 실행됩니다.
편집 2 : 내가 생각한 모델은 cron에서 잘 실행되었지만 실제로는 좋지 않았습니다. 아래 설명 된 수정 사항을 사용하기 전까지는 결과가 잘못되었습니다.
마침내 이것을 고칠 수 있었던 것 같으며 동일한 문제가 발생하는 모든 사람들을 위해 여기에 내 솔루션을 게시하고 있습니다.
env
현재 사용자 환경을보기 위해 터미널에서 실행 했습니다. 전체 출력을 crontab 파일 상단에 복사하여 붙여 넣었습니다. (간단히 PATH 변수를 추가하는 것만으로는 충분하지 않습니다. 트릭을 수행 한 것이 SHELL이거나 아마도 PATH와 SHELL 모두라고 생각하지만 더 이상 탐구하지는 않았습니다.)
내 사용자의 crontab을 편집하기 위해을 실행 crontab -e
한 다음를 눌러 i
파일을 편집하고 파일 env
상단에서 모든 것을 붙여넣고를 눌러 편집을 중지하고 Enter 키를 눌러 ctrl + c
종료 :wq
합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다