[英]Crontab Redhat 8: Crontab will not run an R script that works perfectly otherwise
[英]unable to run R script in crontab in docker container
我正在嘗試在 docker 容器內運行 R 腳本。 這是示例。
我的工作目錄如下所示。
myRDocker
-dockerfile
-scripts
-save_iris.R
在myRDocker
目錄中,有一個dockerfile
和一個目錄scripts
,其中包含一個 R 腳本save_iris.R
我的 R 腳本save_iris.R
如下所示:
write.csv(iris, '/data/iris.csv')
我的 dockerfile 如下所示:
# Install R version 3.6
FROM r-base:3.6.0
#install crontab
RUN apt-get update && apt-get -y install cron
RUN mkdir /data
COPY /scripts /scripts
我去了我的目錄myRDocker
並構建 docker 圖像
docker build -t baser .
我在 bash 中運行 docker 容器。
docker run -it baser bash
進入容器后,我做了:
crontab -e
然后添加這一行,然后保存
* * * * * Rscript /scripts/save_iris.R
它應該每分鍾將文件保存到文件夾/data
中。 但是,我從未在容器內的數據文件夾中找到任何文件。
我的問題是:
我在上述過程中做錯了什么? 我覺得我可能錯過了一些東西......但無法弄清楚為什么......
如果我想在容器啟動時運行計划的 cron 任務該怎么辦。 (類似於將 cron 任務放在一個文件中,並在容器啟動時運行......)
為什么您不在容器運行時啟動 cronjob,而不是在容器啟動后運行? 另外,我認為 crontab 進程不會在您的情況下運行,因為您的容器沒有做任何事情。
試試這個,它將在容器運行時啟動cron
,並且還會跟蹤 cron 作業的日志。 但請記住,在這種情況下,您的主要進程是tail -f /var/log/cron.log
而不是 cron 進程。
FROM r-base:3.6.0
RUN apt-get update && apt-get -y install cron
RUN touch /var/log/cron.log
COPY hello.r /hello.r
RUN (crontab -l ; echo "* * * * * Rscript /hello.r >> /var/log/cron.log") | crontab
# Run the command on container startup
CMD cron && tail -f /var/log/cron.log
因此,您將獲得 Rscript 控制台日志到 Container 標准輸出。
你好。r
print("Hello World from R")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.