Hallo Linux Freunde!
Mich würde interessieren, ob es mittels Crontab möglich ist z.B. einen Cronjob, der 2 Tage nach dem zweiten Dienstag im Monat ausgeführt wird, einzurichten.
Ist das technisch überhaupt realisierbar oder brauche ich da ein Shellscript als Hilfe?
Vielen Dank schon mal für eure Antworten .
Crontab Frage
Re: Crontab Frage
Ich behaupte jetzt mal, daß der erste Dienstag im Monat auf den Zeitraum zwischen dem 1. und dem 6. eines Monats fallen muß. Der Zweite Dienstag muß folglich zwischen dem 8. und dem 14. eines Monats liegen. 2 Tage darauf wäre also der Zeitraum zwischen dem 10. und dem 16. des Monats und 2 Tage nach Dienstag ist Donnerstag.
Das soltle wohl mit den Angaben für Minute, Stunde, Tag des Monats, Monat, Wochentag machbar sein
Minute 0
Stunde z.B. 7
Tag des Monats 10-16
Monat *
Tag der Woche 4
Würde am Donnerstag zwischen dem 10 und 16. jeden Monats um 7.00h morgens eine Job starten.
Das soltle wohl mit den Angaben für Minute, Stunde, Tag des Monats, Monat, Wochentag machbar sein
Minute 0
Stunde z.B. 7
Tag des Monats 10-16
Monat *
Tag der Woche 4
Würde am Donnerstag zwischen dem 10 und 16. jeden Monats um 7.00h morgens eine Job starten.
Re: Crontab Frage
Nein, das würde an jedem Tag zwischen dem 10. und dem 16. laufen oder an irgendeinem Donnerstag.
Man könnte sich den Wochentag des 1. besorgen
und dann eine Verbindung zum 2. Dienstag +2 herstellen
0->12, 1->11, 2->10, 3->16, 4->15, 5->14, 6->13
und diese dann in den Crontab-Befehl einbauen.
Edit: Man glaubt's nicht - denselben Fehler eingebaut (und wieder entfernt), den ich zuvor selbst bemängelt habe!?
Man könnte sich den Wochentag des 1. besorgen
Code: Alles auswählen
date -d $(date +'%Y-%m-01') +%w
0->12, 1->11, 2->10, 3->16, 4->15, 5->14, 6->13
und diese dann in den Crontab-Befehl einbauen.
Edit: Man glaubt's nicht - denselben Fehler eingebaut (und wieder entfernt), den ich zuvor selbst bemängelt habe!?
Zuletzt geändert von tobo am 28.01.2021 02:23:44, insgesamt 4-mal geändert.
Re: Crontab Frage
Die Manpage schlaegt das vor:
Folglich hier:Manpage crontab(5) hat geschrieben: # Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
Code: Alles auswählen
0 4 10-16 * * test $(date +\%u) -eq 4 && echo "Der Do nach dem 2. Di"
Use ed once in a while!
Re: Crontab Frage
Eine andere Variante wäre:
0 0 * * thu root test $(($(date +%W) % 2)) -eq 0 && echo "Donnerstag in einer geraden KW" || echo "Donnerstag in einer ungeraden KW"
EDIT: Genau Lesen hilft...
0 0 * * thu root test $(($(date +%W) % 2)) -eq 0 && echo "Donnerstag in einer geraden KW" || echo "Donnerstag in einer ungeraden KW"
EDIT: Genau Lesen hilft...
Re: Crontab Frage
Ok, danke für den Tipp.tobo hat geschrieben:27.01.2021 23:04:23Nein, das würde an jedem Tag zwischen dem 10. und dem 16. laufen oder an irgendeinem Donnerstag.
Man könnte sich den Wochentag des 1. besorgenund dann eine Verbindung zum 2. Dienstag +2 herstellenCode: Alles auswählen
date -d $(date +'%Y-%m-01') +%w
0->12, 1->11, 2->10, 3->16, 4->15, 5->14, 6->13
und diese dann in den Crontab-Befehl einbauen.
Edit: Man glaubt's nicht - denselben Fehler eingebaut (und wieder entfernt), den ich zuvor selbst bemängelt habe!?
Wie würde das denn aussehen, wenn der Cronjob 9 Tage nach dem zweiten Dienstag ausgeführt werden muss?
Sorry, bin mit Cron leider nicht so vertraut.
Re: Crontab Frage
Ich hatte das ja viel zu kompliziert gesehen und dann im inzwischen gelöschten Edit nochmal den Fehler von MSfree, in abgewandelter Form, wiederholt!? Und hinschreiben musste man dann nichts mehr, da Meillo ja schon eine Lösung gezeigt hatte und an der solltest du dich auch orientieren: 9 Tage nach dem zweiten Dienstag (anstelle 2 Tage nach dem 2. Dienstag) ändert ja nur das Intervall und nicht den Donnerstag (test auf 4). Also änderst du 10-16 zu 17-23 in Meillos Code. Deine Anweisungen ersetzen dann alles ab inklusive dem echo.styladj hat geschrieben:04.02.2021 18:25:25Wie würde das denn aussehen, wenn der Cronjob 9 Tage nach dem zweiten Dienstag ausgeführt werden muss?
Sorry, bin mit Cron leider nicht so vertraut.