PDA

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.

LKH
01.06.04, 09:53
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

taylor
01.06.04, 09:55
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.

Pingu
01.06.04, 10:16
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

taylor
01.06.04, 10:57
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. ;)

Pingu
01.06.04, 11:21
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

franc
12.07.15, 10:16
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.

L00NIX
23.07.15, 20:36
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

L00NIX
23.07.15, 20:37
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

franc
24.07.15, 14:22
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)

L00NIX
24.07.15, 17:28
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.