Frage zu cron, Feld 5 (Wochentag)

Hallo zusammen,
ich möchte zeitgesteuert Backups anlegen. und irgendwie habe ich mit cron ein Problem. Ich gehe mal davon aus, dass ihr mir leicht den richtigen Tipp geben könnt.

Ich habe in /etc/cron.d/ die Datei test mit folgendem Inhalt angelegt:

26 17 2-31 * 0 root echo "Sonntag" > /root/test0.txt
26 17 2-31 * 1 root echo "Montag" > /root/test1.txt
26 17 2-31 * 2 root echo "Dienstag" > /root/test2.txt
26 17 2-31 * 3 root echo "Mittwoch" > /root/test3.txt
26 17 2-31 * 4 root echo "Donnerstag" > /root/test4.txt
26 17 2-31 * 5 root echo "Freitag" > /root/test5.txt
26 17 2-31 * 6 root echo "Samstag" > /root/test6.txt

Eigentlich sollte nach der ersten Zeile an einem Sonntag, der nicht am 1-ten eines Monats ist um 17:26 die Datei test0.txt mit dem Inhalt Sonntag im root-Verzeichnis angelegt werden.

Nach der siebten Zeile an einem Samstag, der nicht am 1-ten eines Monats ist um 17:26 die Datei test6.txt mit dem Inhalt Samstag im root-Verzeichnis angelegt werden.

Heute (Mittwoch, den 26. Juli) um 17:26 wurden aber alle 7 Dateien angelegt?!?

-rw-r--r--  1 root root      8 Jul 26 17:26 test0.txt
-rw-r--r--  1 root root      7 Jul 26 17:26 test1.txt
-rw-r--r--  1 root root      9 Jul 26 17:26 test2.txt
-rw-r--r--  1 root root      9 Jul 26 17:26 test3.txt
-rw-r--r--  1 root root     11 Jul 26 17:26 test4.txt
-rw-r--r--  1 root root      8 Jul 26 17:26 test5.txt
-rw-r--r--  1 root root      8 Jul 26 17:26 test6.txt

Eigentlich dachte ist, dass nur die vierte Zeile mit der 4 im fünften Feld ausgeführt wird, da heute Mittwoch und kein anderer Wochentag ist. Kann mir jemand einen Tipp geben, wo mein Denkfehler liegt?

Schon mal vielen Dank für’s Mitdenken.
Gruß,
Mathias

Hi, vielleicht ist es ja nur der Ort? :thinking:

https://wiki.ubuntuusers.de/Cron/

Ich nehme immer

crontab -e

um einen Cronjob zu ändern oder zu erstellen…

Viele Grüße
Michael

Hallo Mathias,

bedeutet : „um 17h26 jeden Tag des Monats zwischen 2-31 UND am Sonntag“

Damit werden alle deine Einträge jeden Tag ausgeführt, außer am 1. des Monats (außer wenn der 1. des Monats ein Sonntag ist ).

Gruß

Arnaud

BTW, das könnte hilreich sein :

Gruß

Arnaud

Hallo Arnaud,

Ich habe das UND als logisches UND gedeutet:
Wenn Minute=26 UND Stunde=17 UND Tag=2-31 UND Monat=* UND Wochentag=Sonntag ist.
Dann dürfte heute nur eine Anweisung ausgeführt werden?

Das probiere ich gleich aus.
Gruß,
Mathias

Hallo Michael,

Das war’s leider nicht:

-rw-r--r--  1 root root      0 Jul 26 17:58 test0.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test1.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test2.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test3.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test4.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test5.txt
-rw-r--r--  1 root root      0 Jul 26 17:58 test6.txt

Gruß,
Mathias

Nein, in dem Fall ist es ein „OR“ :slight_smile:
Weil sonst könnten die beide Option exklusiv sein.

Gruß

Arnaud

Hallo Arnaud,

Das erklärt alles.
Vielen Dank!!!
Ich hab’s jetzt so gelöst, dass ich vom 2-7, 9-14,16-21,23-28,30,31 das tägliche Backup,
am 8,15,22,29 das wöchentliche Backup und am 1-ten das Monatliche Backup mache. Also ganz ohne Wochentage.

Ist das mit Wochentage und cron so ohne weiteres überhaupt möglich? Nur so aus Interesse?
Gruß,
Mathias

Hallo Mathias,

Als ich es damals programmiert hatte, ist der Cronjob jeden Tag gelaufen, und ich machte den Unterschied im Skript selbst:

  • wenn der Tag Sonntag ist, dann Vollbackup,
  • wenn nicht, dann diffenrentieles Backup.

Das war relativ einfach im Shell:

TAG=$(date +'%u')
if [ $TAG = 7 ] ; then
...
else
...
fi

Gruß

Arnaud

Hallo Arnaud,

So werde ich es machen.
Vielen Dank,
Mathias