Lösung 1:
0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
date +%W
:Wochennummer des Jahres mit Montag als erstem Wochentag, heute Woche 39
10#$(date +%W)
:Konvertiere die date +W
in eine Dezimalzahl umzuwandeln und Verwirrung beim Parsing der Shell-Basis zu vermeiden
$((39%2))
:Modulo-Operation:Ergebnis ist 0 (gerade Wochennummer) oder 1 (ungerade Wochennummer), Ergebnis dieser Woche ist 1, nächste Woche 0
test 1 -eq 1
:arithmetischer Test (gleich), in diesem Fall ist das Ergebnis boolesch wahr
&& yourCommand
:Boolesches UND:Führen Sie yourCommand
aus nur wenn das Ergebnis des vorherigen Befehls boolesch wahr war
Beachten Sie, dass das Jahr zwei ungerade Wochen haben kann:53 (dieses Jahr) und 1 (nächstes Jahr)
Lösung 2:
Was Sie gezeigt haben, ist "jede Woche". Dann lautet der Code:
0 8 * * 6
Sind Sie sicher, dass Sie es alle zwei Wochen ausführen müssen?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand