Se aggiungi un command che ripete each 10 minuti a crontab, quando viene eseguito il primo lavoro?

Come parte della configuration di un contenitore docker, i seguenti vengono iniettati in crontab:

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

Secondo il comportmento di crontab, quando deve iniziare la prima corsa? Se il ciclo di 10 minuti comincia immediatamente, o 10 minuti dopo che questo viene messo in crontab. Né il comportmento sta accadendo in modo che sto cercando di eseguire il debug più in profondità cercando di capire il comportmento previsto.

Questo simulatore di sandbox di cron ti dà un'idea:

 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 

Essa utilizza la syntax:

Ogni nth '0-23/n' , ' */2 ' sarebbe each altro.
' */1 ' è generalmente accettabile altrove, ma è contrassegnato come eventualmente un'entrata involontaria.


Vedere ad esempio " Esegui un lavoro cron con Docker " (di Julien Boulay )

Creiamo un nuovo file chiamato " crontab " per descrivere il nostro lavoro.

 * * * * * 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. 

Il seguente DockerFile descrive tutti i passaggi per build l'image

 FROM ubuntu:latest MAINTAINER [email protected] # 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 

Quindi puoi build l'image con

 sudo docker build --rm -t ekito/cron-example . 

E fai funzionare:

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

Essere paziente, attendere 2 minuti e la tua linea di command dovrebbe essere visualizzata:

 Hello world Hello world 

Se hai sostituito il primo ' ' per ' / 10', dovresti aspettare al successivo 0 o 10 o 20 o … dell'ora.