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