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

作为docker容器设置的一部分,下面的代码被注入到crontab中:

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

根据crontab的行为,第一次运行何时开始? 如果10分钟周期立即开始,或者10分钟后放入crontab。 这两种行为都没有发生,所以我试图通过试图理解预期的行为来更深入地debugging。

Solutions Collecting From Web of "如果将每10分钟重复一次的命令添加到crontab,第一个作业何时运行?"

这个沙箱模拟器给你一个想法:

 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 ”在其他地方通常是可以接受的,但在这里被标记为可能是意外的条目。


请参阅“ 使用Docker运行cron作业 ”(作者: 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。