【问题标题】:Cron doesn't seem to run on Ubuntu Docker containerCron 似乎无法在 Ubuntu Docker 容器上运行
【发布时间】:2019-02-17 09:07:49
【问题描述】:

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)

我在这里不知所措。一直在谷歌上搜索各种解决方案,但到目前为止没有任何效果。

【问题讨论】:

  • 尝试使用 python 二进制文件的绝对路径。同时删除这部分(2>&1^M),可能会出现一些错误。顺便说一句,“^M”是什么?很难知道这里出了什么问题。
  • 用指向/usr/bin/python的python运行它,并且没有2>&1的东西。不确定是哪一个(我会测试并弄清楚,但我的猜测是第二件事)。 ^M 仍然附加在系统日志的末尾,就像现在的 .../cron.log^M) 一样。但是,我现在看到了输出文件。我会尽快报告是绝对指向 python 还是删除 2>&1 是它做了什么。

标签: docker cron ubuntu-16.04


【解决方案1】:

看起来我已经从 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。发布作为其他任何偶然发现此问题的人的可见性的答案。

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 2018-08-29
    • 2015-12-28
    • 2018-02-27
    • 2021-03-04
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多