当 运行 脚本通过 cron 时无法识别来自 RSudio 服务器的 pandoc
pandoc from RSudio Server not recognized when running script via cron
在服务器上,我希望 cron 到 运行 一个使用 rmarkdown 呈现 HTML 页面的 R 脚本。 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
pandoc
的 RStudio 服务器版本已使用符号链接 described here 添加到 usr/local/bin
。在控制台中检查 pandoc 版本给出
mark@myserver:$ pandoc -v
pandoc 1.15.2
这不是日志文件中的旧版本。此外,二进制文件似乎被发现
mark@myserver:$ which pandoc
/usr/local/bin/pandoc
我不确定发生了什么。有什么想法吗?
很可能 /usr/local/bin
正在添加到您的 bash shell 中的 $PATH
,但您的 cron 作业未 运行ning bash 所以路径上没有 pandoc。要测试此假设,请将这些行添加到您的 R 文件中:
Sys.getenv("PATH")
Sys.which("pandoc")
如果情况确实如此,您可以根据需要将 R 脚本附加到 $PATH
,或者在 bash shell 下使用 cron 运行 作业。
如果一切都失败了,你可以设置RSTUDIO_PANDOC
:
Sys.setenv(RSTUDIO_PANDOC = "/usr/local/bin/pandoc")
在服务器上,我希望 cron 到 运行 一个使用 rmarkdown 呈现 HTML 页面的 R 脚本。 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
pandoc
的 RStudio 服务器版本已使用符号链接 described here 添加到 usr/local/bin
。在控制台中检查 pandoc 版本给出
mark@myserver:$ pandoc -v
pandoc 1.15.2
这不是日志文件中的旧版本。此外,二进制文件似乎被发现
mark@myserver:$ which pandoc
/usr/local/bin/pandoc
我不确定发生了什么。有什么想法吗?
很可能 /usr/local/bin
正在添加到您的 bash shell 中的 $PATH
,但您的 cron 作业未 运行ning bash 所以路径上没有 pandoc。要测试此假设,请将这些行添加到您的 R 文件中:
Sys.getenv("PATH")
Sys.which("pandoc")
如果情况确实如此,您可以根据需要将 R 脚本附加到 $PATH
,或者在 bash shell 下使用 cron 运行 作业。
如果一切都失败了,你可以设置RSTUDIO_PANDOC
:
Sys.setenv(RSTUDIO_PANDOC = "/usr/local/bin/pandoc")