作者corel (可罗)
看板R_Language
标题[问题] 使用 crontab 排程要执行 R 程式
时间Sun Mar 27 02:31:47 2016
[问题类型]:
程式谘询(我想用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
感谢各位大大
谢谢
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.168.206.122
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1459017111.A.CF7.html
1F:推 obarisk: 写个脚本在crontab里印.libPath 03/27 08:42
2F:→ obarisk: 比一下在rstudio里的.libPath 03/27 08:43
诚如 obarisk 大大所言
在 crontab -e 下执行 .libPath()结果
[1] "/usr/local/lib/R/site-library"
[2] "/usr/lib/R/site-library"
[3] "/usr/lib/R/library"
在 Rstdudio 下执行 .libPath()结果
的确 crontab 少了 /home/yoyo/... 这一行
[1] "/home/yoyo/R/x86_64-pc-linux-gnu-library/3.2"
[2] "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library"
[4]"/usr/lib/R/library"
请问该如何解决?
3F:推 swedrf0112: 我猜应该是权限问题 确定ㄧ下你的crontab执行跟安装pa 03/27 08:46
4F:→ swedrf0112: cage时的权限是ㄧ样的 03/27 08:46
请问 swedrf0112 大大
权限是要用 sudo Rscript 吗?...
我不太明白...不过我加了结果还是一样...
※ 编辑: corel (1.168.215.2), 03/28/2016 07:58:51
5F:→ Wush978: crontab的环境变数和你平常使用下的环境变数差超多 03/28 08:23
6F:→ Wush978: 我之前用的quick solution是直接在crontab中ssh自己执行 03/28 08:23
7F:→ Wush978: 指令,这样可以解决很多问题(但是要开ssh server) 03/28 08:23
8F:→ Wush978: 其他可能的问题还有:sort的结果会不同 03/28 08:23
9F:→ Wush978: .libPaths()会受到环境变数影响,细节在.libPaths的说明 03/28 08:24
10F:→ Wush978: 我建议你如果不想花太多时间在这件事情上面,就在crontab 03/28 08:24
11F:→ Wush978: 中ssh自己执行程式,否则除了这点外还可能会有其他bug 03/28 08:25
感谢 Wush978 版主大大的回应
小的刚刚想到一个很笨的方法
就是在inlcude library下
library("XML", lib.loc="指定lib安装的路径")
这样可以在crontab下正常的执行
我有看过Wu大的教学影片
真是惠我良多
谢谢
※ 编辑: corel (211.73.74.11), 03/28/2016 09:50:05
12F:推 obarisk: 把路径加到path之中,或是都装到system的路径中 03/28 18:49
13F:→ obarisk: 无脑做法就是用sudo装pkg安全做法是开.libpath的权限 03/28 18:50
14F:→ obarisk: 如果不会遇到版本问题的话 03/28 18:50