的cron任务没有被执行

问题描述:

我有这个Dockerfile(这里我使用miniconda只是因为我想安排一些Python脚本,但它是一个debian:jessie泊坞窗图像):的cron任务没有被执行

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/)看起来可能是一种选择,以及在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守护进程运行:

[email protected]:/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 

我在做什么错误?

+0

码头是'类固醇过程'。如:一个过程。不是虚拟机。你不能假设'init'或'systemd'运行你只是交出'cron'守护进程任务。 –

+0

[Docker:Cronjob不能正常工作]的可能的重复(http://*.com/questions/24943982/docker-cronjob-is-not-working) –

+0

从关于'supervisor'的docker文档看起来可能是这样的一个选项以及'bash'脚本选项(如我的例子),这就是为什么我决定去bash脚本并忽略'supervisor'。我不确定我明白为什么这个bash脚本是错误的。我也尝试在bash脚本中用'cron'行替换'service cron start'行,但没有成功。 – TPPZ

您确定Cronjob拥有执行权吗?

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