在RStudio中运行cron作业

在RStudio中运行cron作业,r,cron,rstudio,R,Cron,Rstudio,我正试图通过EC2实例上的RStudio计划一个cron作业。 当我使用带有非常基本函数的基本脚本时,它工作得很好。 但是,当我想要调度一个包含specfic R包中的R函数的脚本时,脚本会失败 我的cron看起来像这样: MAILTO="myemail@adress.com" 36 * * * * /home/user1/Test_for_Cron.R 启动脚本后,我收到一封来自Cron守护进程的电子邮件,指定如下内容: R\u函数中出现错误: 找不到函数R\u函数 停止执行 根据我的发现,

我正试图通过EC2实例上的RStudio计划一个cron作业。
当我使用带有非常基本函数的基本脚本时,它工作得很好。 但是,当我想要调度一个包含specfic R包中的R函数的脚本时,脚本会失败

我的cron看起来像这样:

MAILTO="myemail@adress.com"
36 * * * * /home/user1/Test_for_Cron.R
启动脚本后,我收到一封来自Cron守护进程的电子邮件,指定如下内容:

R\u函数中出现错误: 找不到函数R\u函数
停止执行

根据我的发现,似乎我必须指定我要在RStudio中运行脚本,或者我要“源”它。
我觉得答案可能是以下3篇文章的组合,但在测试了一些建议后,我没有找到解决方案:




非常感谢您的帮助

您误解了
cron
和shell命令的工作原理——R文件是不可执行的(除非您对其进行更改,请参见下文)

但是如果您只是在它前面加上
Rscript
,您就可以 1.在shell中测试它,直到它工作为止 2.由
cron
执行

36 * * * * Rscript /home/user1/Test_for_Cron.R
编辑:如果执行以下两项操作,则可以使其可执行:

  • 添加一个
    shebang
    #/usr/bin/Rscript
    (或指向
    Rscript
    的任何路径)
  • 通过chmod 755 Test\u for_Cron.R将模式更改为可执行模式,该模式为您(所有者)设置读/写/执行,为组和其他人设置读/执行

您误解了cron和shell命令的工作原理——R文件是不可执行的(除非您对其进行更改,请参见下文)

但是如果您只是在它前面加上
Rscript
,您就可以 1.在shell中测试它,直到它工作为止 2.由
cron
执行

36 * * * * Rscript /home/user1/Test_for_Cron.R
编辑:如果执行以下两项操作,则可以使其可执行:

  • 添加一个
    shebang
    #/usr/bin/Rscript
    (或指向
    Rscript
    的任何路径)
  • 通过chmod 755 Test\u for_Cron.R将模式更改为可执行模式,该模式为您(所有者)设置读/写/执行,为组和其他人设置读/执行
    • 谢谢你,德克。 是的,我已经添加了
      #/将usr/bin/Rscript
      添加到我的脚本中。 问题实际上来自一个简单的事实,即一些库没有加载到我的脚本中,从而导致错误并停止脚本。 现在,所有库都已加载,工作正常

      谢谢你,德克。 是的,我已经添加了
      #/将usr/bin/Rscript
      添加到我的脚本中。 问题实际上来自一个简单的事实,即一些库没有加载到我的脚本中,从而导致错误并停止脚本。
      现在,所有库都已加载,工作正常

      也许可以尝试通过打印Sys.info()来启动脚本,以检查cron是否找到了正确的R二进制文件(和库)-我有类似于此问题的smthg+问题是cron找到了错误版本的RWhen I do Sys.info()我没有看到任何关于R库hoops的信息,请尝试
      .libpath()
      R.version
      --这会有相关的信息,也许可以尝试通过打印Sys.info()来启动脚本,以检查cron是否找到了正确的R二进制文件(和库)-我有过类似此问题的smthg+问题是当我执行Sys.info()时,cron找到了错误的rw版本我没有看到关于R库hoops的任何信息,请尝试
      .libpath()
      R.version
      ——这将包含相关信息