pandoc с RSudio Server не распознается при запуске скрипта через cron

На сервере я хочу, чтобы cron запускал R-скрипт, который отображает HTML-страницу с использованием rmarkdown. Сервер RStudio установлен. Запись crontab для пользователя mark:

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

тест.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 

Серверная версия RStudio pandoc была добавлена ​​в usr/local/bin с помощью символической ссылки, как здесь). Проверка версии pandoc в консоли дает

mark@myserver:$ pandoc -v
pandoc 1.15.2

это не старая версия, как в файле журнала. Кроме того, кажется, что двоичный файл найден

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

Я не уверен, что происходит. Любые идеи?


person Mark Heckmann    schedule 25.02.2016    source источник


Ответы (1)


Вполне вероятно, что /usr/local/bin добавляется к вашему $PATH в вашей оболочке bash, но ваше задание cron не выполняется под bash, и поэтому в пути нет pandoc. Чтобы проверить это предположение, добавьте следующие строки в свой R-файл:

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

Если это действительно так, вы можете добавить свой сценарий R к $PATH по мере необходимости или запустить задание cron в оболочке bash.

Если ничего не помогает, вы можете установить RSTUDIO_PANDOC:

Sys.setenv(RSTUDIO_PANDOC = "/usr/local/bin/pandoc")
person Jonathan    schedule 26.02.2016
comment
Наконец-то я добавил Sys.setenv(RSTUDIO_PANDOC="/usr/lib/rstudio-server/bin/pandoc") в свой скрипт. Работающий! Спасибо - person Mark Heckmann; 28.02.2016