CRON没有执行R脚本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRON没有执行R脚本文件相关的知识,希望对你有一定的参考价值。

我试图自动运行存储在桌面文件夹(cron_test)上的R中的脚本(test.R)。我在我的mac终端中使用CRON。示例R脚本生成随机数,绘制它们并将它们保存为PDF:

setwd("~/Desktop/cron_test")

pdf("example_plot.pdf", width = 8, height = 8)
plot(rnorm(100))
dev.off()

我的CRON代码尝试每分钟调用一次,但文件夹中没有任何内容:

* * * * * Rscript /Users/username/Desktop/cron_test/test.R

什么都没有产生。我尝试过以下方法:

  • 如果我从终端调用它,该文件运行正常,表明代码没有问题: Rscript /Users/username/Desktop/cron_test/test.R
  • 我还确保(并仔细检查)该文件的权限具有可执行权限,如qazxsw poi: qazxsw poi
  • 我也从这个答案中尝试了另一个提出的解决方案,即创建一个调用R脚本的shell文件。这也行不通。

我收到邮件说明CRON任务已经运行,但我的cron_test文件夹中没有输出。

答案

邮件是否说

this proposed answer to a similar issue

?

如果是这样,请尝试使用chmod 777 /Users/username/Desktop/cron_test/test.R的完整路径。你可以从终端找到这个

/bin/sh: Rscript: command not found

这样做的原因是,与交互式终端相比,您在cron会话中获得的环境要小得多。您可以通过比较输出来检查这一点

Rscript

和cron工作

$ which Rscript

通过计算每个文件中的行数,我们可以看到它们完全不同。

$ /usr/bin/env > env-interactive

特别是cron作业中的shell可执行搜索路径(* * * * * /usr/bin/env > env-cron )要短得多

$ wc -l env-interactive,cron
      20 env-interactive
       8 env-cron

(使用完整路径$PATH在我的macos High Sierra笔记本电脑上为我工作,并制作了情节。)

以上是关于CRON没有执行R脚本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AIX 中监视没有 cron 作业的文件更改

从cron运行时,Perl脚本不会将STDOUT输出到文件

Cron作业无法执行写入文本文件的python脚本

脚本手动执行正常,放cron中执行有问题的原因

Bash 脚本未在 Cron 中正确执行

使用crontab,让linux定时执行shell脚本