Crontab Frage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
styladj
Beiträge: 2
Registriert: 09.03.2020 22:56:00

Crontab Frage

Beitrag von styladj » 27.01.2021 21:53:35

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 :).

Benutzeravatar
MSfree
Beiträge: 10724
Registriert: 25.09.2007 19:59:30

Re: Crontab Frage

Beitrag von MSfree » 27.01.2021 22:50:26

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.

tobo
Beiträge: 1989
Registriert: 10.12.2008 10:51:41

Re: Crontab Frage

Beitrag von tobo » 27.01.2021 23:04:23

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

Code: Alles auswählen

date -d $(date +'%Y-%m-01') +%w
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!?
Zuletzt geändert von tobo am 28.01.2021 02:23:44, insgesamt 4-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Crontab Frage

Beitrag von Meillo » 27.01.2021 23:45:38

Die Manpage schlaegt das vor:
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"
Folglich hier:

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!

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Crontab Frage

Beitrag von Tintom » 28.01.2021 21:04:25

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... :roll:

styladj
Beiträge: 2
Registriert: 09.03.2020 22:56:00

Re: Crontab Frage

Beitrag von styladj » 04.02.2021 18:25:25

tobo hat geschrieben: ↑ zum Beitrag ↑
27.01.2021 23:04:23
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

Code: Alles auswählen

date -d $(date +'%Y-%m-01') +%w
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!?
Ok, danke für den Tipp.
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.

tobo
Beiträge: 1989
Registriert: 10.12.2008 10:51:41

Re: Crontab Frage

Beitrag von tobo » 04.02.2021 18:41:53

styladj hat geschrieben: ↑ zum Beitrag ↑
04.02.2021 18:25:25
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.
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.

Antworten