【问题标题】:Cron job doesn't work until I re-save cron file in docker container在我将 cron 文件重新保存在 docker 容器中之前,Cron 作业不起作用
【发布时间】:2017-08-01 10:44:47
【问题描述】:

我正在使用 docker Mongo 容器并尝试通过 bash 脚本进行备份。该脚本自行执行,运行良好。我还可以在 syslog 中看到 cron 正在运行,但该命令未显示。如果我用 crontab -e 打开我的文件,然后保存并退出 (:wq),然后重新启动 cron,作业运行正常。

这是我的 dockerfile 的相关部分:

ADD mongocron /etc/cron.d/
RUN tr -d '\015' < /etc/cron.d/mongocron > /etc/cron.d/mongocron
#RUN touch /etc/cron.d/mongocron
#RUN echo "* * * * * /db_scripts/MongoDBBackup.sh >> /db_scripts/logs/backup.log\n" > /etc/cron.d/mongocron
RUN crontab /etc/cron.d/mongocron
RUN chmod 0644 /etc/cron.d/mongocron

这是 mongocron 文件中的内容:

* * * * * /db_scripts/MongoDBBackup.sh >> /db_scripts/logs/backup.log

这是重新保存之前的系统日志输出:

这是之后的图片:

自行重启 cron 并不能修复它。我觉得它与行尾有关,所以这就是为什么你会在 dockerfile 中看到带有换行符的注释掉的“echo”策略。我还验证了(在保存之前)当我 crontab -l

时我的命令确实显示了

【问题讨论】:

  • 你知道为什么它不工作了吗?你的解决方案是什么?我想我遇到了同样的问题。我只能在docker启动后使用“crontab -l | crontab -”触发cron工作,这对于生产当然是不可接受的。

标签: docker cron


【解决方案1】:

我也遇到过这个问题,原因是文件末尾缺少换行符。 @opHASnoNAME 的答案是正确的,但是只有在编辑后才开始工作时,原因是换行。您的编辑器只是默认添加它。

【讨论】:

    【解决方案2】:

    过去我也遇到过同样的问题。

    这是一个在野外测试的工作示例,取自我们的DevBlog

    FROM ubuntu:latest
    
    ADD start.sh /bin/start.sh
    RUN chmod +x /bin/start.sh
    
    # Add crontab file in the cron directory
    ADD crontab /etc/cron.d/thecron
    
    # Give execution rights on the cron job
    RUN chmod 0644 /etc/cron.d/thecron
    
    # Create the log file to be able to run tail
    RUN touch /var/log/cron.log
    
    # start script
    CMD /bin/bash /bin/start.sh
    

    start.sh,认为你不需要导出环境变量的部分..

    # export all environment variables to use in cron
    env | sed 's/^\(.*\)$/export \1/g' > /root/envs.sh
    chmod +x /root/envs.sh
    
    # Run the command on container startup
    cron && tail -f /var/log/cron.log
    

    Cron 文件,在构建映像时复制。

    0 1 * * * root . /root/envs.sh;/bin/backup.sh >> /var/log/cron.log 2>&1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2016-09-24
      相关资源
      最近更新 更多