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.
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
freedom is just another word for nothing left to loose ...
Läuft am 1. bis 7. des Monats, wenn es ein Sonntag ist.Code:0 0 1,2,3,4,5,6,7 * 7 /bin/false
Debian GNU/Linux Sid, KDE, Kernel 2.6.10-as6, XFS - Richtig Fragen stellen
Besucht uns im IRC auf irc.linuxforen.de in #linuxforen.de
Und warum dann nicht gleich so?Zitat von taylor
PinguCode:0 0 1-7 * 7 /bin/false
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.Zitat von Pingu
Dein Weg sieht natürlich deutlich lesbarer aus.
Debian GNU/Linux Sid, KDE, Kernel 2.6.10-as6, XFS - Richtig Fragen stellen
Besucht uns im IRC auf irc.linuxforen.de in #linuxforen.de
*pinguschäm* mußte auch erst mit man 5 crontab nachsehen.Zitat von taylor
Pingu
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:
Vor das Skript prüfen, ob es der erste bis siebte ist und im Cron nur sonntags eintragen also:Code:[ $(date +%d) -le 7 ] &&
So hat es bei mir geklappt.Code:0 0 * * 7 ... [ $(date +%d) -le 7 ] && mein_skript
Hi,
Im Cron-Skript den Tag abfragen:
Und in Crontab dann folgende Zeile eintragen (hier: 6:55 Uhr jeden 1. Sonntag im Monat)Code:#!/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
GrußCode:55 6 1-7 * * root /pfad/zum/skript
L00NIX
Geändert von L00NIX (23.07.15 um 19:38 Uhr)
Hi,
Im Cron-Skript den Tag abfragen:
Und in Crontab dann folgende Zeile eintragen (hier: 6:55 Uhr jeden 1. Sonntag im Monat)Code:#!/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
GrußCode:55 6 1-7 * * root /pfad/zum/skript
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.
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)
Dann Benutze das Skript einfach als Wrapper für das "richtige" Skript: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.
und dann die Zeile in der Crontab:Code:#!/bin/bash # Filterung ueber Wochentag DOW=$( LANG=C date "+%a" ) case ${DOW} in Sun) # Es ist Sonntag exit 0 ;; *) # andere Wochentage exit 1 ;; esac
Man kann auch die ganze Logik wie in den vorherigen Beiträgen in die Crontab codieren, ich finde das aber extrem unschön.Code:55 6 1-7 * * root /pfad/zum/wrapper && /dein/Skript
Gruß
L00NIX
Geändert von L00NIX (24.07.15 um 16:32 Uhr)
Hier noch eine Variante ohne wrapper-Skript:
Prüft quasi beim Cron-Aufruf, welcher der ersten 7 Tage des Monats ein Sonntag ist.Code:55 6 1-7 * * [ "$(date '+\%a')" == "Sun" ] && /dein/skript
¡Nuestro amigo... el Computador!
Lesezeichen