【发布时间】:2016-08-04 23:06:36
【问题描述】:
由于某种原因,我的 R 脚本无法使用 crontab 运行。我现在每分钟都有它进行测试,但一旦它工作就会改变它。
有什么想法吗?
* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”
此外,这只是终端中的普通命令。
【问题讨论】:
由于某种原因,我的 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
我从您的 cmets 看到 Rscript 的完全限定路径是 /usr/local/bin/Rscript。我猜/usr/local/bin 不在拥有此 crontab 的用户的路径中。尝试使用完全限定路径,如下所示:
* * * * * /usr/local/bin/Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
【讨论】:
Rscript 是否在拥有此 crontab 的用户的路径中?如果您指定Rscript 的完全限定路径,它是否有效?
* * * * * /usr/local/bin/Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
检查您是否真的在运行 crontab 守护程序。你应该得到一个数字作为返回,它是 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() 函数或在访问文件时使用绝对路径,以确保无论在何处使用脚本都能正常工作。
【讨论】: