docker容器中的cron任务未被执行

时间:2017-04-03 13:18:01

标签: docker cron crontab scheduling

我有Dockerfile(我正在使用miniconda只是因为我想安排一些python脚本,但它是debian:jessie泊坞窗图片):

FROM continuumio/miniconda:4.2.12

RUN mkdir -p /workspace
WORKDIR /workspace
ADD volume .

RUN apt-get update
RUN apt-get install -y cron

ENTRYPOINT ["/bin/sh", "/workspace/conf/entrypoint.sh"]

保持容器存活的脚本entrypoint.sh就是这个:

#!/usr/bin/env bash

echo ">>> Configuring cron"
service cron start
touch /var/log/cron.log
mv /workspace/conf/root /var/spool/cron/crontabs/root
chmod +x /var/spool/cron/crontabs/root
crontab /var/spool/cron/crontabs/root
echo ">>> Done!"

tail -f /var/log/cron.log

关于supervisorhttps://docs.docker.com/engine/admin/using_supervisord/)的docker文档,看起来这可能是一个选项以及bash脚本选项(如我的例子中所示),这就是为什么我决定去寻找bash脚本并忽略主管。

cron详细信息/workspace/conf/root的内容是:

* * * * * root echo "Hello world: $(date +%H:%M:%S)" >> /var/log/cron.log 2>&1

(底部为空行\n

我无法找到Hello world: $(date +%H:%M:%S)每分钟附加到/var/log/cron.log的方法,但对我来说,所有cron / crontab设置都是正确的。

当我查看容器的日志时,我可以看到:

>>> Configuring cron
[ ok ] Starting periodic command scheduler: cron.
>>> Done!

此外,登录正在运行的容器时,我可以看到正在运行的cron守护程序:

root@2330ced4daa9:/workspace# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0   4336  1580 ?        Ss+  13:06   0:00 /bin/sh /workspace/conf/entrypoint.sh
root         14  0.0  0.0  27592  2096 ?        Ss   13:06   0:00 /usr/sbin/cron
root         36  0.0  0.0   5956   740 ?        S+   13:06   0:00 tail -f /var/log/cron.log
root        108  0.5  0.1  21948  3692 ?        Ss   13:14   0:00 bash
root        114  0.0  0.1  19188  2416 ?        R+   13:14   0:00 ps aux

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你确定Cronjob有执行权吗?

chmod 0644 /var/spool/cron/crontabs/root