Laut dieser Site bedeutet Ihre Zeichenfolge "Um 24 Uhr, am 25., 26., 27., 28., 29., 30. und 31. Tag jeden Monats und jeden Do um 11:00 Uhr " (meine Betonung). Wenn die Site korrekt ist, würde dies erklären, warum sie am 18. lief.
Der Beispieleintrag man 5 crontab
für den 2. Samstag ist:
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
(dh jeden Tag der zweiten Woche ausführen und den Wochentag als Teil des Befehls prüfen) - Dies unterstützt die Ansicht, dass der Wochentag ein zusätzlicher alternativer Filter ist und keine weitere Qualifizierung, obwohl die Manpage dies nicht tut klar.
In Ihrem Fall würde ich also Folgendes verwenden:
00 11 * * 4 root test $(date -d @$((`date +\%s`+604800)) +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1
Prüfen Sie, ob Ihre date
Unterstützung gilt -d 'next Thursday'
: Wenn ja, können Sie die etwas einfachere verwenden:
00 11 * * 4 root test $(date -d 'next Thu' +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1
Dieser wird jeden Donnerstag ausgeführt und überprüft, ob das Datum einer Woche (604800 Sekunden) ab jetzt im selben Monat liegt: Wenn nicht, muss es der letzte Donnerstag sein, sodass der Sicherungsbefehl ausgeführt wird.