【发布时间】: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工作,这对于生产当然是不可接受的。