[問題] 使用 crontab 排程要執行 R 程式

作者: corel (可羅)   2016-03-27 02:31:47
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉) & linux 新手
[問題敘述]:
想要在 Linux底下用 crontab 排程 執行 R 程式
用 Rstudio 直接執行,就一切正常
但是換到用 crontab 設定排程就會產生錯誤..
主要是說 bitops 與 XML 套件找不到...!
請問是不是要把我所需要的套件設成 R 裡面預設的套件?
除require("套件名稱") 與 library("套件名稱")之外
有其它的做法嗎?
PS. 其實我有寫一個小程式來測試 crontab 來執行 R 程式, 執行結果是正常的...
以下為輸出的錯誤訊息:
Loading required package: bitops
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE,
logical.return = TRUE, : there is no package called ‘bitops’
Loading required package: XML
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return =
TRUE, : there is no package called ‘XML’
Loading required package: RCurl
Warning message:In library(package, lib.loc = lib.loc, character.only
= TRUE, logical.return = TRUE, : there is no package called ‘RCurl’
Loading required package: DBI
Loading required package: methods
Loading required package: RMySQL
Error in library(bitops) : there is no package called ‘bitops’
停止執行
[環境敘述]:
請提供 sessionInfo() 的輸出結果,
R version 3.2.4 Revised (2016-03-16 r70336)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.4 LTS
locale:
[1] LC_CTYPE=zh_TW.UTF-8 LC_NUMERIC=C LC_TIME=zh_TW.UTF-8
[4] LC_COLLATE=zh_TW.UTF-8 LC_MONETARY=zh_TW.UTF-8 LC_MESSAGES=zh_TW.UTF-8
[7] LC_PAPER=zh_TW.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=zh_TW.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RMySQL_0.10.8 DBI_0.3.1 RCurl_1.95-4.8 XML_3.98-1.4 bitops_1.0-6
loaded via a namespace (and not attached):
[1] tools_3.2.4
感謝各位大大
謝謝
作者: obarisk (OSWALT)   2016-03-27 08:42:00
寫個腳本在crontab裡印.libPath比一下在rstudio裡的.libPath
作者: swedrf0112 (M)   2016-03-27 08:46:00
我猜應該是權限問題 確定ㄧ下你的crontab執行跟安裝pacage時的權限是ㄧ樣的
作者: Wush978 (拒看低質媒體)   2016-03-28 08:23:00
crontab的環境變數和你平常使用下的環境變數差超多我之前用的quick solution是直接在crontab中ssh自己執行指令,這樣可以解決很多問題(但是要開ssh server)其他可能的問題還有:sort的結果會不同.libPaths()會受到環境變數影響,細節在.libPaths的說明我建議你如果不想花太多時間在這件事情上面,就在crontab中ssh自己執行程式,否則除了這點外還可能會有其他bug
作者: obarisk (OSWALT)   2016-03-28 18:49:00
把路徑加到path之中,或是都裝到system的路徑中無腦做法就是用sudo裝pkg安全做法是開.libpath的權限如果不會遇到版本問題的話

Links booklink

Contact Us: admin [ a t ] ucptt.com