web-dev-qa-db-fra.com

Crontab a lieu toutes les deux semaines, le samedi, à partir de ce samedi

Aujourd'hui est vendredi 3 octobre 2014 03:58

Je veux planifier un cronjob comme ça pour l'exécuter aux dates suivantes:

  1. Samedi 4 octobre 2014 08:00
  2. Samedi 18 octobre 2014 08:00
  3. Samedi 1 novembre 2014 08:00 ... ...

Donc toutes les 2 semaines, le samedi, à 8 heures.

11
kupa
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)

27
Cyrus

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
4
Glueon