Cronjob é executado antes da hora programada, o que poderia estar errado?
10
Tenho abaixo do crontab programado para sábado, que cai entre os dias 19 e 23, não sei por que ele foi executado no dia 20 (sexta-feira). Qualquer suposição?
Você pode encontrar alguma inspiração /etc/cron.d/mdadmusada no Ubuntu e Debian. É assim que ocorre o primeiro domingo de cada mês:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
kasperd 23/11
obrigado kasperd, 0 18 * * 6 [date +\%d -le 07] && <task> está funcionando bem para mim, onde é necessário executar no primeiro sábado de cada mês.
Simer
Respostas:
16
Essa expressão Cron se traduz em:
At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.
Por isso, disse explicitamente ao cron para ser executado na sexta-feira 20. Isto é devido a:
When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute
&& current_hour == scheduled_hour && current_month == scheduled_month &&
(current_day == scheduled_date OR current_weekday == scheduled_weekday).
/etc/cron.d/mdadm
usada no Ubuntu e Debian. É assim que ocorre o primeiro domingo de cada mês:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
0 18 * * 6 [date +\%d -le 07] && <task>
está funcionando bem para mim, onde é necessário executar no primeiro sábado de cada mês.Respostas:
Essa expressão Cron se traduz em:
Por isso, disse explicitamente ao cron para ser executado na sexta-feira 20. Isto é devido a:
Esta informação é desta útil ferramenta Cron: http://crontab.guru/
Para que seu trabalho seja executado em determinados dias, quando é sábado, você pode usar:
Esta solução é do dia da semana crontab vs. dia do mês?
fonte
%
com um significado especial nos cronjobs - ele separa o stdin do comando.