Pandoc при использовании R markdown с командой cron

Я пытаюсь создать команду cron, которая будет использовать R markdown для создания новой html-страницы через определенные промежутки времени. Я обнаружил, что это проблема с pandoc.

Когда я регистрирую свою команду cron, я получаю следующее сообщение об ошибке

Ошибка: требуется pandoc версии 1.12.3 или выше и не найден (см. Страницу справки? Rmarkdown :: pandoc_available). Выполнение остановлено

Есть ли простой фрагмент кода, который я могу добавить в файл .Rmd, чтобы указать его на pandoc при выполнении команды cron?


Сохранение исходного сообщения. Это ниже этого абзаца.

Все, что я хочу сделать, это файл под названием test_doc.Rmd.

Когда я запускаю следующую команду в командной строке, она работает успешно:

RScript -e "library(rmarkdown); render(\"/path/test_doc.Rmd\")"

Однако, когда я запускаю это в crontab, у меня ничего не получается. Я использую такую ​​версию:

25      10      *       *       *       RScript -e "library(rmarkdown); render(\"/path/test_doc.Rmd\")"

Я сбит с толку. Я не верю, что это проблема пути к файлу, поскольку у меня есть другие сценарии R (не rmarkdown), запущенные в crontab и работающие. Я использую Mac OS X 10.10.5


person Aaron M    schedule 21.12.2016    source источник
comment
Интересно, удалось ли вам когда-нибудь решить эту проблему?   -  person OganM    schedule 07.08.2019


Ответы (3)


То же самое случилось со мной, и я нашел ответ в связанное сообщение о вашем сообщении об ошибке (которое я даже не видел):

Ошибка: требуется pandoc версии 1.12.3 или выше и не найден (см. Страницу справки? Rmarkdown :: pandoc_available). Выполнение остановлено

Перед рендерингом необходимо указать переменную среды RSTUDIO_PANDOC:

Rscript -e 'Sys.setenv(RSTUDIO_PANDOC="/usr/lib/rstudio/bin/pandoc"); rmarkdown::render("test_doc.Rmd")'

Это должно решить вашу проблему cronjob. У меня это сработало.

Я предполагаю, что большинство пользователей Linux + RStudio установили pandoc по этому пути / usr / .... В противном случае запросите местоположение с помощью Sys.getenv("RSTUDIO_PANDOC") из интерактивного сеанса, в котором работает вязание, и замените путь в приведенной выше команде.

person Gregor    schedule 21.11.2020

Пытаться

25 10 * * *   cd /path && Rscript -e 'rmarkdown::render("test_doc.Rmd")'

который избегает

  1. Полный путь и дает rmarkdown и knitr лучший рабочий каталог
  2. Необходимость заключать кавычки в кавычки, используя апострофы снаружи и стандартные двойные кавычки внутри.
person Dirk Eddelbuettel    schedule 21.12.2016
comment
Я все еще не могу заставить это работать в crontab (это работает в терминале). Может быть, это проблема с разрешениями? Или проблема с пакетами? - person Aaron M; 21.12.2016
comment
Вы используете /etc/crontab или crontab для каждого пользователя? Я всегда начинаю с touch /tmp/BeenHereNowDeleteMe.txt или чего-то подобного и продолжаю оттуда. - person Dirk Eddelbuettel; 21.12.2016
comment
Я был на crontab для каждого пользователя. - person Aaron M; 21.12.2016

Добавьте путь в начало вашего cron и перенаправьте вывод для отладки:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/5 * * * * cd /path/to/script/ && Rscript -e 'library(rmarkdown); rmarkdown::render("your_script.Rmd")' >/path/to/script/cron.log 2>/path/to/script/cronerr.log
person titaniumtroop    schedule 28.03.2017