Aujourd'hui est vendredi 3 octobre 2014 03:58
Je veux planifier un cronjob comme ça pour l'exécuter aux dates suivantes:
Donc toutes les 2 semaines, le samedi, à 8 heures.
0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
date +%W
: Numéro de semaine de l'année avec lundi comme premier jour de la semaine, aujourd'hui semaine 39
10#$(date +%W)
: convertissez le date +W
en nombre décimal et évitez la confusion d'analyse de base du shell
$((39%2))
: opération modulo: le résultat est 0 (numéro de semaine pair) ou 1 (numéro de semaine impair), le résultat de cette semaine est 1, la semaine prochaine 0
test 1 -eq 1
: Test arithmétique (égal), dans ce cas le résultat est booléen true
&& yourCommand
: Booléen ET: exécutez yourCommand
uniquement si le résultat de la commande précédente était booléen true
Notez que l'année peut avoir deux semaines impaires: 53 (cette année) et 1 (l'année prochaine)
Ce que vous avez montré, c'est "chaque semaine". Alors le code est:
0 8 * * 6
Êtes-vous sûr de devoir l'exécuter toutes les deux semaines?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand