我有一个 Docker 容器,其中安装了我的 Python 工具,包括我的 Luigi 管道接口(interface)。我想运行一个 shell 脚本,它每周使用 cron 启动我的 Luigi 管道。
我尝试了高和低来让 cron 在 Docker 容器中工作。我一生都无法运行我的 crontab -e 文件。
在我的文件中,我有:0 0 * * Sun /data/myscript.sh
后跟一个新行。 Cron 在后台运行 - ps aux | grep cron
显示 /usr/sbin/cron
正在运行。此外,在我的 /var/log/syslog
文件中,我有:/USR/SBIN/CRON[2037]: (root) CMD (/data/myscript.sh)
我也试过使用 0 0 * * Sun . /root/.bashrc ; sh /data/myscript.sh
但是,我的脚本没有运行(当我使用 bash myscript.sh
手动运行我的脚本时,我得到了预期的结果)。
建议?
最佳答案
计划任务不会在普通容器内运行,因为没有运行调度程序。唯一的事件任务将是您选择通过 CMD 关键字或入口点运行的任务。
为了执行调度任务,使用主机调度程序和 docker exec 命令更为谨慎:
docker exec <container> <command>
docker exec <container> /data/myscript.sh
所以你最终会在你的主机上得到一个 cron,比如:
(Crontab 样式)
0 * * * * root docker exec mycontainer/data/myscript.sh
如果你有一个集群,你必须先查询集群来定位容器,或者甚至有一个脚本为你做。
关于linux - 在 Docker 容器中运行计划的 cron 作业的解决方案?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40939772/