docker - 在我将 cron 文件重新保存在 docker 容器中之前,Cron 作业无法正常工作

标签 docker cron

我正在使用 docker Mongo 容器并尝试通过 bash 脚本进行备份。该脚本自行执行,运行良好。我还可以在系统日志中看到 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

这是重新保存前的系统日志输出: enter image description here

下面是一张图片: After resaving

自行重新启动 cron 并不能解决问题。我觉得它与行尾有关,所以这就是为什么您在 dockerfile 中看到带有换行符的注释掉的“echo”策略。我还验证了(在保存之前)我的命令在我 crontab -l 时确实显示了

最佳答案

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

关于docker - 在我将 cron 文件重新保存在 docker 容器中之前,Cron 作业无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729388/

相关文章:

linux - 定时任务 : better make 10 cron or one cron calling 10 files?

node.js - 如何使用 node-schedule 仅在一个实例上运行 cron?

docker - 在docker build中挂载NFS共享以安装软件

docker-compose up - 为容器设置环境变量

linux - OpenSuse 13.2 中的 Cron 重启

linux - 通过 cron 以 root 身份记录旋转 "Permission Denied"

ruby-on-rails - Ruby on Rails - Rake 任务无法通过 Cron 工作

java - Spring boot application.yml 中的 Spring Kafka SSL 设置

linux - Ubuntu 20.04 : sudo apt-get update not Working

networking - 什么是覆盖网络以及 DNS 解析如何工作?