在服务器上,我希望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 here将pandoc
的RStudio服务器版本添加到usr/local/bin
。检查控制台中的pandoc版本
mark@myserver:$ pandoc -v
pandoc 1.15.2
这不是日志文件中的旧版本。此外,似乎找到了二进制文件
mark@myserver:$ which pandoc
/usr/local/bin/pandoc
我不确定发生了什么。有什么想法吗?
答案 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")