如果向crontab添加每10分钟重复一次的命令,第一个作业何时运行?

时间:2016-01-22 22:58:03

标签: linux docker cron

作为docker容器设置的一部分,以下内容将被注入crontab:

*/10 * * * * /opt/run.sh >> /opt/run_log.log

根据crontab的行为,第一次运行应该什么时候开始? 10分钟的周期应该立即开始,还是10分钟后才能进入crontab。这两种行为都没有发生,所以我试图通过尝试理解预期的行为来更深入地调试它。

1 个答案:

答案 0 :(得分:1)

这个cron沙箱模拟器为您提供了一个想法:

Mins    Hrs Day Mth DoW
*/10    *   *   *   *

This run time (UTC)     Sat 2016-Jan-23 0653
Forward Schedule    Sat 2016-Jan-23 0700
    Sat 2016-Jan-23 0710
    Sat 2016-Jan-23 0720

它使用语法:

  

nth '0-23/n',' */2'会是彼此。
  ' */1'在其他地方通常是可以接受的,但在这里被标记为可能是非预期的进入。

参见例如" Run a cron job with Docker" (Julien Boulay

  

让我们创建一个名为“crontab”的新文件来描述我们的工作。

* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
# An empty line is required at the end of this file for a valid cron file.
  

以下DockerFile描述了构建图像的所有步骤

FROM ubuntu:latest
MAINTAINER docker@ekito.fr

# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD cron && tail -f /var/log/cron.log
  

然后您可以使用

构建图像
sudo docker build --rm -t ekito/cron-example .
  

运行它:

sudo docker run -t -i ekito/cron-example
  

请耐心等待2分钟,您的命令行应显示:

Hello world
Hello world

如果您更换了第一个' '通过' / 10',你必须等到下一个0或10或20或......小时。