Archiv verlassen und diese Seite im Standarddesign anzeigen : Cronjob der nur jeden ersten Sonntag im Monat läuft !
eurofreddy
01.06.04, 09:04
Hallo,
kann mir jemand sagen wie ich nen Cronjob anlege der nur jeden ersten Sonntag im Monat läuft ? Ich bekomme das net hin ! :-)
Gruß Euro.
Hi,
nur mit einem cronjob geht das IMHO nicht. Ich würde foglendes machen (wenn es wirklich sein muss, dass es wirklich der erste Sonnatg im Monat sein soll):
1. cornjob anlegen für den 1. bis 6. jeden Monats, der ein Skript aufruft
2. in diesem Skript aus dem aktuellen Datum den Tag greppen; wenn Sonntag, dann ausführen, ansonsten beenden.
Hoffe es hilft.
LKH
0 0 1,2,3,4,5,6,7 * 7 /bin/false
Läuft am 1. bis 7. des Monats, wenn es ein Sonntag ist.
0 0 1,2,3,4,5,6,7 * 7 /bin/false
Läuft am 1. bis 7. des Monats, wenn es ein Sonntag ist.
Und warum dann nicht gleich so?
0 0 1-7 * 7 /bin/false
Pingu
Und warum dann nicht gleich so?
Weil ich faul bin, die crontab Syntax auch nach etlichen Jahren noch nicht immer im Kopf habe, und weil ich deshalb kcron verwende, welcher das halt so ausgibt. :)
Dein Weg sieht natürlich deutlich lesbarer aus. ;)
Weil ich faul bin, die crontab Syntax auch nach etlichen Jahren noch nicht immer im Kopf habe, und weil ich deshalb kcron verwende, welcher das halt so ausgibt. :)
*pinguschäm* mußte auch erst mit man 5 crontab nachsehen.
Pingu
0 0 1,2,3,4,5,6,7 * 7 /bin/false
Läuft am 1. bis 7. des Monats, wenn es ein Sonntag ist.
Läuft am ersten bis siebten des Monats jeden Tag und im restlichen Monat zusätzlich auch an Sonntagen.
Geht leider so nicht.
LKH hat recht.
Man kann aber mit:
[ $(date +%d) -le 7 ] &&
Vor das Skript prüfen, ob es der erste bis siebte ist und im Cron nur sonntags eintragen also:
0 0 * * 7 ... [ $(date +%d) -le 7 ] && mein_skript
So hat es bei mir geklappt.
Hi,
Im Cron-Skript den Tag abfragen:
#!/bin/bash
# hier evtl. PATH festlegen
# Filterung ueber Wochentag
DOW=$( LANG=C date "+%a" )
case ${DOW} in
Sun)
# Es ist Sonntag: Tu was
;;
*)
# andere Wochentage: nichts tun
exit 0
;;
esac
... hier geht's weiter
Und in Crontab dann folgende Zeile eintragen (hier: 6:55 Uhr jeden 1. Sonntag im Monat)
55 6 1-7 * * root /pfad/zum/skript
Gruß
L00NIX
Hi,
Im Cron-Skript den Tag abfragen:
#!/bin/bash
# hier evtl. PATH festlegen
# Filterung ueber Wochentag
DOW=$( LANG=C date "+%a" )
case ${DOW} in
Sun)
# Es ist Sonntag: Tu was
;;
*)
# andere Wochentage: nichts tun
exit 0
;;
esac
... hier geht's weiter
Und in Crontab dann folgende Zeile eintragen (hier: 6:55 Uhr jeden 1. Sonntag im Monat)
55 6 1-7 * * root /pfad/zum/skript
Gruß
L00NIX
Das ist keine optimale Lösung weil damit das Skript spezialisiert wird und nicht mehr für verschiedene Aufgaben verwendet werden kann. In meinem Fall ginge das so nicht. Ich bräuchte dann sieben verschiedene Skripte.
BetterWorld
24.07.15, 14:53
Mal sowas probieren: 0 0 1 ? 1/1 SUN#1 *
Sollte um 1:00Uhr jeden ersten Sonntag laufen.
(Hab ich nicht probiert, abba selbst gefunden im Netz)
Das ist keine optimale Lösung weil damit das Skript spezialisiert wird und nicht mehr für verschiedene Aufgaben verwendet werden kann. In meinem Fall ginge das so nicht. Ich bräuchte dann sieben verschiedene Skripte.
Dann Benutze das Skript einfach als Wrapper für das "richtige" Skript:
#!/bin/bash
# Filterung ueber Wochentag
DOW=$( LANG=C date "+%a" )
case ${DOW} in
Sun)
# Es ist Sonntag
exit 0
;;
*)
# andere Wochentage
exit 1
;;
esac
und dann die Zeile in der Crontab:
55 6 1-7 * * root /pfad/zum/wrapper && /dein/Skript
Man kann auch die ganze Logik wie in den vorherigen Beiträgen in die Crontab codieren, ich finde das aber extrem unschön.
Gruß
L00NIX
ThorstenHirsch
26.07.15, 11:36
Hier noch eine Variante ohne wrapper-Skript:
55 6 1-7 * * [ "$(date '+\%a')" == "Sun" ] && /dein/skript
Prüft quasi beim Cron-Aufruf, welcher der ersten 7 Tage des Monats ein Sonntag ist.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.