Cronjob s'exécute avant l'heure prévue, qu'est-ce qui pourrait ne pas arriver?
10
J'ai ci-dessous crontab prévu pour samedi qui tombe entre les jours 19-23, je ne sais pas pourquoi il s'est déroulé le 20 (vendredi). Des suppositions?
Vous pourriez trouver de l'inspiration dans /etc/cron.d/mdadmUbuntu et Debian. Voici comment cela fonctionne le premier dimanche de chaque mois: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
merci kasperd, 0 18 * * 6 [date +\%d -le 07] && <task> fonctionne bien pour moi, où il doit être exécuté le premier samedi de chaque mois.
simer
Réponses:
16
Cette expression Cron se traduit par:
At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.
Donc, il a explicitement dit à cron de se présenter le vendredi 20. Cela est dû à:
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
Ubuntu et Debian. Voici comment cela fonctionne le premier dimanche de chaque mois: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>
fonctionne bien pour moi, où il doit être exécuté le premier samedi de chaque mois.Réponses:
Cette expression Cron se traduit par:
Donc, il a explicitement dit à cron de se présenter le vendredi 20. Cela est dû à:
Ces informations proviennent de cet outil Cron pratique: http://crontab.guru/
Pour que votre travail s'exécute des jours donnés quand c'est samedi, vous pouvez utiliser:
Cette solution est de crontab jour de la semaine vs jour du mois?
la source
%
a une signification particulière dans les cronjobs - il sépare le stdin de la commande.