【问题标题】:How to run an R script in crontab如何在 crontab 中运行 R 脚本
【发布时间】:2012-08-14 10:27:57
【问题描述】:

使用 crontab -e 我试过了:

* * * * *  Rscript /home/.../file.r
* * * * * /usr/lib/R/bin/Rscript /home/.../file.r
* * * * * /usr/bin/Rscript /home/.../file.r
* * * * * /home/.../foo.sh

其中 foo.sh 包含:

sudo R CMD BATCH file.r

只需运行 $ ./foo.sh 即可。 $ R CMD BATCH file.r 有效。

我在 crontab 中尝试过的任何方法都不起作用。有什么想法吗?

【问题讨论】:

  • 尝试编辑 /etc/crontab。我不确定 sudo 是否适用于 crontab -e

标签: r crontab


【解决方案1】:

您需要在 foo.sh 中包含完整路径:

sudo R CMD BATCH /home/.../file.r

我还应该补充一点,第一个版本对我有用,尽管我将它设置为特定时间而不是 * * * * *

【讨论】:

  • 我已经尝试过 * * * * * 和特定时间。两者都没有做任何事情。
  • 如果你切换到一个不同的目录并从命令行运行Rscript /home/.../file.r 会起作用吗?
  • 如果它与 file.R 有关,您是否尝试过创建一个新的简单测试文件,例如 test.R:write.csv(rnorm(5), file="test.csv") 并为此设置 crontab?然后就可以看到 test.csv 是否被创建了。
  • file.R 本身是否引用任何路径?
【解决方案2】:

这里值得一提的是 CRANberries 条目,它每天(多次)工作了 5 年以上:

# every few hours, run cranberries
11 */2 * * *    edd     ~/cranberries/cranberries.r

这里值得注意的是

  1. 时间规范,这里是每两小时过去 11 分钟
  2. 用户
  3. 完整路径,使用'globbing'将~ 扩展为$HOMEedd

然后你只需要确保脚本实际上是可执行的。无论您使用 Rscript、litter 还是 R BATCH CMD 都无所谓。

【讨论】:

  • 正确,因为crontab -e 没有用户字段。我更喜欢/erc/crontab,因为它很简单。
  • 我使用 crontab 来运行 php 脚本,所以我对它的工作原理有一个基本的了解。仍然不确定为什么它不适用于 R。我想我明天会用 php 重写所有内容。
  • 学习一些基本的调试。编写一个 R 单行脚本,它只涉及/tmp 中的一个文件。让它运行。然后添加越来越多的逻辑。你真的只需要理清 $PATH 和权限。
  • 解决了。脚本从哪个目录运行?问题是我在脚本中,我在与脚本相同的目录中寻找另一个文件,但似乎 crontab 从 ~/.很抱歉因为太恼火而无法调试,在过去的 3 天里我已经为此工作了大约 40 个小时,我遇到的最大问题是 crontab 非常令人沮丧。
  • 是的,我还有其他启动 cd ~/foo/bar && ./somescript.r 的 crontab 作业。这个是 setwd() 开始时...
【解决方案3】:

在我的用户级 crontab 中,我运行一个 R 脚本来收集来自各种来源的推文。

我用过: crontab -u myusername -e 将此添加到我的 crontab 文件的末尾

0 0 * * * /home/bob/Documents/SWtweets/tweetbash.sh

我以用户与 root 的身份运行它,但它没有什么区别,但它仅在我以用户级别运行时才对我有用。

下面是我在我的 tweetbash.sh shell 脚本中输入的内容, 它告诉 bash 程序运行位于指定路径的 R 脚本。

#! /bin/bash R CMD BATCH /home/bob/Documents/SWtweets/tweets.R

chmod +x tweetbash.sh

它适用于我的目的。

鲍勃

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 2015-06-30
    • 2019-03-23
    • 2020-02-06
    • 2022-01-05
    • 2020-09-30
    • 2017-09-07
    • 2015-10-05
    相关资源
    最近更新 更多