每分钟安排一个 R 脚本 crontab

Schedule a Rscript crontab everyminute

出于某种原因,我的 R 脚本不会 运行 带有 crontab。我现在每分钟都有它进行测试,但一旦它起作用就会改变它。

有什么想法吗?

* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”

此外,这只是终端中的一个普通命令。

我可以在你的 cron 条目中看到可怕的 smart quotes。当您从文字处理器复制粘贴时,经常会发生这种情况。在这些令人厌恶的地方退格并重新输入正常引号。变化:

* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”

* * * * * Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"

看出区别了吗?它很微妙,很容易错过。

更新:

我看到您已经进行了上述更改,但它仍然不适合您。验证 Rscript 是否在拥有此 crontab 的用户的 $PATH 环境变量中。或者,您可以直接在 cron 条目中指定 Rscript 的完全限定路径。您可以使用以下命令在命令行上快速找到它:

which Rscript

更新#2:

我从您的评论中看到 Rscript 的完全限定路径是 /usr/local/bin/Rscript。我猜 /usr/local/bin 不在拥有此 crontab 的用户的路径中。尝试使用完全限定路径,如下所示:

* * * * * /usr/local/bin/Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"

检查你是否真的是 运行 crontab 守护进程。您应该得到一个数字 return,这是 crontab 的进程 ID。

pgrep cron

确保您的 R 文件是可执行的:

sudo chmod +x [yourfile.R]

在您的 R 文件中添加 shebang 行:

#!/usr/local/bin/Rscript

让 crontab 做目录的改变:

* * * * * cd /Users/Home/Desktop/David Studios/Scraper/ && /usr/local/bin/Rscript compiler.R

您可能对 R 中的工作目录有疑问。

当您从终端 运行 脚本时,您可能位于脚本所需文件所在的目录中,但是当脚本 运行 带有 cron 时,它使用另一个目录。

在访问文件时使用 R 脚本中的 setwd() 函数或使用绝对路径,以确保脚本无论在何处使用都能正常工作。