Por que essa tarefa do cron é executada?

4

Eu tenho um script cron que é executado algumas vezes todos os dias ao longo do ano. No entanto, em torno do Natal, deve funcionar de forma diferente. Então meu script parece basicamente assim:

# m h  dom mon dow   command
26 16 * JAN-NOV MON-THU (echo 14 'date') >> /var/log/cron.www-data 2>&1
26 16 1-18 DEC MON-THU (echo 6 'date') >> /var/log/cron.www-data 2>&1

onde substituí o comando real por um simples echo para fins de depuração / demonstração. Para o caso excepcional, adicionei alguns trabalhos como

26 07 19-24 DEC ? (echo 1 'date' ) >> /var/log/cron.www-data 2>&1

que realmente funcionam bem.

O problema é que a segunda linha acima ( echo 6 ) acabou de ser executada, hoje 19 de dezembro - o arquivo de log mostra

6 Tue Dec 19 16:00:01 CET 2017

Acho que minha pergunta é simples: Por que esse trabalho foi executado ?

Estou executando o Linux 3.18.11-v7 + # 781 SMP PREEMPT Ter Abr 21 18:07:59 BST 2015 armv7l GNU / Linux em um Raspberry Pi.

    
por CompuChip 19.12.2017 / 16:33

1 resposta

4

O motivo pode ser encontrado em crontab(5) :

Commands are executed by cron(8) when the minute, hour, and month of year fields match the current time, and when at least one of the two day fields (day of month, or day of week) match the current time.

( ênfase adicionada )

Acredito que você deseja que seu script seja executado no horário especificado de 1 a 18 de dezembro, mas apenas de segunda a quinta-feira. Como você pode ver na página de manual, cron não faz isso quando você especifica o dia do mês e o dia da semana. Seu comando será executado todos os dias de 1 a 18 de dezembro e em qualquer dia de segunda a quinta em dezembro. 19 de dezembro de 2017 é uma terça-feira, portanto, o script está sendo executado.

Nota: acima se aplica ao cron do ISC, o padrão nos sistemas Debian.

    
por 19.12.2017 / 16:43

Tags