通过cron运行脚本时无法识别来自RSudio Server的pandoc

时间:2016-02-25 10:01:48

标签: r cron r-markdown pandoc rstudio-server

在服务器上,我希望cron运行一个R脚本,该脚本使用rmarkdown呈现HTML页面。已安装RStudio服务器。用户mark的crontab条目是:

* * * * * Rscript R/test.R >> /tmp/cron.log 2>&1

test.R:

library(rmarkdown)
getwd()
render("R/test.Rmd")

cron.log文件显示

[1] "/home/mark"
Error: pandoc version 1.12.3 or higher is required and was not found.
Execution stopped

然而,从控制台运行test.R可以正常工作:

Rscript R/test.R 

使用符号链接described herepandoc的RStudio服务器版本添加到usr/local/bin。检查控制台中的pandoc版本

mark@myserver:$ pandoc -v
pandoc 1.15.2

这不是日志文件中的旧版本。此外,似乎找到了二进制文件

mark@myserver:$ which pandoc
/usr/local/bin/pandoc

我不确定发生了什么。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

可能会在您的bash shell中将/usr/local/bin添加到$PATH,但您的cron作业未在bash下运行,因此路径上没有pandoc。要测试此假设,请将这些行添加到R文件中:

Sys.getenv("PATH")
Sys.which("pandoc")

如果确实如此,您可以根据需要将R脚本附加到$PATH,或让cron在bash shell下运行该作业。

如果其他所有方法都失败了,您可以设置RSTUDIO_PANDOC

Sys.setenv(RSTUDIO_PANDOC = "/usr/local/bin/pandoc")