Wie kann ich Cron jeden zweiten Sonntag am ANDEREN Sonntag zum Laufen bringen?

10

Ich habe einen Cron-Job, der bei 0 0 * * 0/2 läuft - dh jeden zweiten Sonntag. Es lief zum Beispiel gerade jetzt. Ich möchte jedoch, dass es an den anderen Sonntagen läuft - am nächsten Sonntag und nicht an diesem. Anders ausgedrückt: Ich gehe davon aus, dass es an geraden Sonntagen des Jahres läuft, aber ich möchte, dass es an ungeraden Sonntagen läuft.

Ich sehe in "man 5 crontab" nichts, was mir dabei helfen könnte, also nehme ich an, ich muss zurückgehen, um den Cronjob bei 0 0 * * 0 auszuführen, und dann etwas in dem Befehl tun, den ich ausführe, um zu überprüfen, welcher Sonntag es ist ist. Kann mir jemand mit geeigneten Kommandozeilen-Tricks helfen?

ETA: Ich habe festgestellt, dass mein 0/2 überhaupt nicht das tut, was ich ursprünglich gedacht hatte (jeden zweiten Sonntag). Es läuft jeden Sonntag, solange dieser Wochentag durch zwei teilbar ist, was es natürlich ist. D'oh. Auf jeden Fall bleibt die Grundvoraussetzung bestehen: Führen Sie an ungeraden Sonntagen einen Befehl aus.

Skud
quelle
"ungerade" wie in "Der erste, dritte und fünfte Sonntag"?
voretaq7
1
Nein, wie in der 1., 3., 5., 7., ... 49., 51. Woche des Jahres. Mit anderen Worten, vierzehntägig an den Sonntagen, die in ungeraden Wochen des Jahres fallen.
Skud
Entschuldigung - cron wird das nicht für dich tun. Sie müssen Ihr Skript überprüfen lassen, ob es die richtige Woche für Sie ist. (Auch wenn Sie sich an mich von einem bestimmten Ort erinnern - HI !!! winkt )
Jenny D

Antworten:

3

Ich werde nicht so tun, als hätte ich diese spezielle Aufgabe selbst versucht, aber diese Frage zum Stapelüberlauf enthält einige Antworten, die potenzielle Tricks in der Befehlszeile aufzeigen: /programming/350047/how-to-instruct-cron-to- Führen Sie jede zweite Woche einen Job aus

nmjk
quelle
Keiner von diesen lässt Cron in den ungeraden Wochen laufen. Sie alle machen einfach alle anderen. Einige auf extrem exotische und "kreative" Weise, die ich auch nicht empfehlen würde.
Chris S
Die Antwort mit der höchsten Bewertung wird voraussichtlich jede Woche ausgeführt und stützt sich dann auf Befehlszeilentricks, um festzustellen, ob es sich um die entsprechende Woche handelt.
nmjk
1
Ja, aber es ist Modulo 2, was bedeutet, dass es in den geraden Wochen laufen wird. Es könnte möglich sein, mehrere evalBlöcke zu stapeln , um einen hinzuzufügen, und dann das Modulo 2 auszuführen. Das ist bestenfalls hässlich, aber ich nehme an, es könnte funktionieren.
Chris S
1
Aus der verknüpften Antwort geht hervor, dass dies Potenzial hat: date +\%W\% 2> / dev / null || was auch immer ... Um jedoch die ungeraden Wochen zu erhalten, würde ich "&& was auch immer" anstelle von || tun wollen
Skud
1
Also um Klarstellung bitten. Möchten Sie "jede ungerade Woche" nach Woche des Jahres oder nach Woche des Monats bestimmen? Ich bin mir ziemlich sicher, dass Letzteres möglich ist, aber ich müsste einige alte Schnipsel finden, die ich in der Vergangenheit verwendet habe.
nmjk