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.
Antworten:
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
quelle
eval
Blö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.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