【发布时间】:2022-02-05 10:30:01
【问题描述】:
我想运行 cron 并运行一些在 crontab 中设置的时间启动的脚本。我已经在我的 docker 容器上安装了 cron,并且想添加一些 crontab 行和 cron 从单独的脚本开始。这是我的配置片段
supervisord.conf
[program:cron]
command=/stats/run-crontabs.sh
/stats/run-crontabs.sh
#!/bin/bash
crontab -l | { cat; echo "11 1 * * * /stats/generate-year-rank.sh"; } | crontab -
crontab -l | { cat; echo "12 1 * * * /stats/generate-week-rank.sh"; } | crontab -
cron -f -L 15
当需要通过 cron 运行脚本时,我只能在容器日志中看到该错误
2022-01-29 01:12:01,920 INFO reaped unknown pid 691343
我想知道如何通过 cron 在 docker 容器上运行脚本。我需要主管吗?
编辑:正如@david-maze 建议的那样,我已经按照他的评论完成了它并将 cron 作为容器入口点运行,问题是一样的
感谢您的帮助
【问题讨论】:
-
我会完全移除主管。将cron守护进程作为主容器进程作为前台进程运行;甚至不要在你的 Dockerfile 中安装 supervisord。
-
但我需要主管在容器中运行其他进程
-
关注 cron 进程本身:你能在单独的单进程容器中运行 cron,无需 supervisord 吗?如果您显示的脚本是从数据库中读取数据并将统计信息写回数据库,是否有任何东西会迫使它位于同一个容器中?
-
是的,由于我们的项目需求,我想关闭一个容器中的所有逻辑。我知道,最好让数据库和脚本在单独的容器中读取和写入数据,但我必须遵守要求。这就是为什么我需要主管,并且我还想在该容器上作为第三个进程进行 cron 工作。
-
我已经按照你的建议运行了它,问题是一样的。甚至没有显示此日志
标签: linux bash docker cron supervisord