我正在尝试通过EC2实例上的RStudio安排cron作业。
当我使用具有非常基本功能的基本脚本时,它可以正常工作。
但是,当我要调度包含特定R包中的R函数的脚本时,这些脚本将失败。
我的cron看起来像这样:
MAILTO="myemail@adress.com"
36 * * * * /home/user1/Test_for_Cron.R
启动脚本后,我收到Cron Daemon的电子邮件,内容如下:
R_function 中的错误: 找不到函数 R_function
执行停止
从发现的内容来看,似乎我必须指定我要在RStudio中运行脚本,还是要“获取”该脚本。
我觉得答案可能是下面这3个帖子的组合,但是在测试了一些建议后我找不到解决方案:
Check if R is running in RStudio
Cron job for an R script failing
R command for setting working directory to source file location in Rstudio
不胜感激!
答案 0 :(得分:4)
您误解了cron
和shell命令的工作方式-R文件不可执行(除非您对其进行更改,请参见下文)。
但是如果您仅将其前缀为Rscript
,则可以
1.在您的外壳中测试它,直到它起作用
2.由cron
执行它,
36 * * * * Rscript /home/user1/Test_for_Cron.R
编辑:如果执行以下两项操作,则可以使其可执行:
shebang
行#!/usr/bin/Rscript
(或指向Rscript
的路径)chmod 755 Test_for_Cron.R
将模式更改为可执行文件,该模式为您(所有者)设置读取/写入/执行,为组和其他用户设置读取/执行。答案 1 :(得分:0)
谢谢德克。
是的,我确实已经向脚本添加了#!/usr/bin/Rscript
。
问题实际上来自一个简单的事实,即我的脚本中未加载某些库,从而导致错误并停止了该脚本。
现在所有库都已加载,一切正常!