gpt4 book ai didi

docker - Cron似乎没有在Ubuntu Docker容器上运行

转载 作者:行者123 更新时间:2023-12-02 19:30:03 25 4
gpt4 key购买 nike

Dockerfile的相关部分:

RUN apt-get install -y cron
RUN service cron start

ADD cronjob /etc/cron.d/gptswmm-cron
RUN chmod 0644 /etc/cron.d/gptswmm-cron
RUN touch /var/log/cron.log

RUN crontab /etc/cron.d/gptswmm-cron
RUN cron

我检查 ps -ef输出,而cron不存在。无论如何,我可以使用 cron命令在事实发生后手动旋转它,并且它会显示出来(只是检查我的所有框,也可以执行 service cron start)。
UID        PID  PPID  C STIME TTY          TIME CMD
root 1 0 0 15:54 pts/0 00:00:00 /bin/bash
root 41 0 0 15:59 ? 00:00:00 cron
root 65 0 0 16:02 ? 00:00:00 ps -ef

我执行 crontab -l并获得与我的cronfile中相同的内容(它也具有空行和结尾):
MAILTO=""
* * * * * root python /var/test/testcron.py >> /var/log/cron.log 2>&1

Python文件只是在同一目录(确保与脚本位置相同的目录)中创建(或附加到现有文件的情况下)测试文件,重复相同的单词。尽可能简单的测试。 (我本来是将它回显到日志文件,但是这样做是因为我对python脚本中的情况比对bash更加满意)。 Python文件由root拥有,并拥有所有者的所有权限。

但是,当我检查文本文件应该在哪里时,什么也没有。当我检查 /var/log/cron.log时,它是空的。

当我手动调用 python /var/test/testcron.py时,它可以工作并创建输出文件。

因此,我进行了一些系统日志记录,最后使用以下命令重做了Dockerfile:
RUN apt-get install -y rsyslog

重建并启动容器。首先启动rsyslog rsyslogd,然后使用 cron启动cron并使用 service start cron仔细检查。

检查 /var/log/syslog和cron是否被调用,这些基本的两行每分钟重复一次:
... CRON[48]: (root) CMD (python /var/test/testcron.py >> /var/log/cron.log 2>&1^M)
... CRON[47]: (root) CMD (root python /var/test/testcron.py >> /var/log/cron.log 2>&1^M)

我在这里茫然。一直在谷歌搜索和寻找各种解决方案,但是到目前为止没有任何效果。

最佳答案

看起来我已经从cron作业中删除了2>&1:

* * * * * root python /var/test/testcron.py >> /var/log/cron.log

我已经从 https://www.ekito.fr/people/run-a-cron-job-with-docker/复制了大部分过程,并认为可能是因为他的教程试图输出到控制台而导致连线交叉。

全部归功于@brthornbury,以评论原始问题。发布作为答案的答案,以供其他偶然发现此问题的人查看。

关于docker - Cron似乎没有在Ubuntu Docker容器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com