提问
作为docker容器设置的一部分,以下内容将被注入crontab:*/10 * * * * /opt/run.sh >> /opt/run_log.log
根据crontab的行为,第一次运行应该什么时候开始? 10分钟的周期应该立即开始,还是10分钟后才能进入crontab.这两种行为都没有发生,所以我试图通过尝试理解预期的行为来更深入地调试它.
最佳答案
这个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
它使用语法:
Every
nth '0-23/n'
, ‘*/2
‘ would be every other.
‘*/1
‘ is generally acceptable elsewhere, but is flagged here as possibly an unintended entry.
参见例如“Run a cron job with Docker”(Julien Boulay)
Let’s create a new file called “
crontab
” to describe our job.
* * * * * 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.
The following DockerFile describes all the steps to build your image
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
Then you can build the image with
sudo docker build --rm -t ekito/cron-example .
And run it:
sudo docker run -t -i ekito/cron-example
Be patient, wait for 2 minutes and your commandline should display:
Hello world
Hello world
如果您将第一个”替换为’/ 10′,则必须等到下一个0或10或20或……小时.