Répondre
Modifiez votre logique cron du mardi pour qu'elle s'exécute toutes les deux semaines depuis l'époque .
Sachant qu'il y a 604800 secondes dans une semaine (en ignorant les changements d'heure d'été et les secondes intercalaires, merci), et en utilisant la date GNU :
0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh
À part
L'arithmétique du calendrier est frustrante.
La réponse de @xahtep est formidable mais, comme @Doppelganger l'a noté dans les commentaires, elle échouera à certaines limites d'année. Aucun des date
les spécificateurs "semaine de l'année" de l'utilitaire peuvent aider ici. Certains mardis de début janvier répéteront inévitablement la parité hebdomadaire du dernier mardi de l'année précédente :2016-01-05 (%V), 2018-01-02 (%U) et 2019-01-01 (%W) .
la réponse de Pilcrow est excellente. Cependant, il en résulte que le script quinze jours.sh s'exécute tous les même semaine (depuis l'époque). Si vous avez besoin que le script s'exécute sur odd semaines, vous pouvez modifier un peu sa réponse :
0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh
Changer le 1 en 0 le ramènera aux semaines paires.
Qu'en est-il de cela, il le garde dans le crontab
même s'il n'est pas exactement défini dans les cinq premiers champs :
0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh