PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cron fuehrt Aufgabe zum falschen Zeitpunkt aus



Vagabundo
22.08.10, 13:06
Hi,

ich hatte bisher noch nie Probleme mit cron und dachte es waere eine Software die sicher und zuverlaessig laeuft.

Jetzt hatte ich bereits 2 x dass cron einmal zur richtigen Zeit und einmal zwei Tage spaeter ausgefuehrt wurde:

0 7 20 8 0 .......

Diese Eintragung wurde am 20.8. um 7 Uhr Serverzeit ausgefuehrt und ein zweites mal heute, am 22.8. um 7 Uhr.
Wie ist das moeglich?
Habe ich da etwas falsch gemacht?
Oder gibt es da einen Bug in cron?

Ich weiss wirklich nicht weiter.

Christian

drcux
22.08.10, 13:32
Wenn ich das sehe, macht cron hier alles richtig:

0 7 = um 7:00 Uhr ausführen -> OK
20 8 = am 20.08. ausführen -> OK
0 = am nullten Tag der Woche (Sonntag) ausführen -> OK

oziris
22.08.10, 13:40
Mich würde das cron.log interessieren, denn am 22.8. sollte es nicht passieren.

PS: Welchen cron verwendest Du denn? (fcron, vixie-cron, ...)

Stormbringer
22.08.10, 13:56
Mich würde das cron.log interessieren, denn am 22.8. sollte es nicht passieren.

Doch, sollte es ...


0 7 20 8 0 .......


Auszug aus man crontab(5)


The time and date fields are:

field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)

... und nun wird es wohl jeden Sonntag (heute ist auch Sonntag, und zwar der 22.) laufen ;)

L00NIX
22.08.10, 15:29
Und hier noch das passende Zitat aus der Manpage crontab(5):


Note: The day of a command’s execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., aren’t *), the command will be run when either field matches the current time. For example, ‘‘30 4 1,15 * 5’’ would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.


Das heißt also auf Deutsch:
Wenn die letzten beiden Felder (Tag des Monats, Wochentag) nicht * sind, wird der Job ausgeführt, sobald nur eine (oder auch beide) der Bedingungen zutrifft.

Gruß
L00NIX

drcux
22.08.10, 22:11
OK, ich hatte also Recht. ;)

oziris
22.08.10, 22:42
Das gehört offenbar zu den Unterschieden der verschiedenen cron-Varianten. Das Manual, das hier zitiert wurde, war das von vixie-cron. Das von fcron sagt hingegen folgendes:
If a day of month and a day of week are given, the command will execute only when both match with the current time and date unless option dayor is set.

Stormbringer
23.08.10, 08:16
Oh ... das wußte ich bis dato auch nicht ... Danke & sry, oziris!

Ist es nicht schön, die Vielfalt der Auswahl zu haben ... und hoffentlich auch immer die zugehörige man-page ;)

Vagabundo
23.08.10, 18:04
Danke fuer Eure Info.
Ich hatte garnicht gewusst, dass es verschiedene Versionen gibt. Ich habe einen Redhat Centos Server.
In der dortigen man ist folgendes angegeben: (ISC Cron V4.1). Aber da finde ich weder unter cron noch unter crontab entsprechende Infos.
Ich hatte aber zu meiner Info im Internet nach cron und Anleitung gesucht, weil ich etwas auf deutsch haben wollte.
Dort hiess es ganz eindeutig fuer den Wochentag:
1-7 und Sonntag = 1
demzufolge war fuer mich die 0 ohne Wert.
Aber so wie Ihr das erklaert ist es schon OK, wenn es am Sonntag ausgefuehrt wird. Aber es passt eigentlich nicht in die ganze cron-Logik hinein.

Aber es ist eben wie es ist! Danke fuer Eure Hilfe, da waere ich sonst nie drauf gekommen.

Waere dann richtig:
0 7 20 8 * .......
Nein - dann wird es ja jeden Tag ausgefuehrt?
Was muss ich denn nun beim Wochentag einsetzen, wenn dieser Parameter nicht genutzt werden soll, oder kann man den einfach weglassen? Dazu habe ich jedoch noch nie etwas gelesen.

Christian

Newbie314
23.08.10, 22:15
*

Mit "Tag des Monats" und gleichzeitig einer Angabe in "Wochentag" war deine Tabelle nämlich überbestimmt.

Also in deinem Falle '*' als Wochentag.

L00NIX
24.08.10, 19:38
Ich hatte garnicht gewusst, dass es verschiedene Versionen gibt. Ich habe einen Redhat Centos Server. In der dortigen man ist folgendes angegeben: (ISC Cron V4.1). Aber da finde ich weder unter cron noch unter crontab entsprechende Infos.

Das liegt vielleicht daran, dass es zu crontab in zwei verschiedenen Sektionen eine Manpage gibt. Deshalb schrieb ich auch crontab(5), wobei 5 hier die Sektion ist. Wenn du man crontab eingibst, landest du mit Sicherheit in crontab(1). Rufe mal


# man 5 crontab

auf.

Bei Recherchen auch immer sehr hilfreich: apropos:


# apropos cron
/etc/anacrontab (5) [anacrontab] - configuration file for anacron
anacron (8) - runs commands periodically
anacrontab (5) - configuration file for anacron
cron (8) - daemon to execute scheduled commands (Vixie Cron)
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron
dh_installcron (1) - install cron scripts into etc/cron.*

und dann eben mit man die entsprechende Seite/Sektion aufrufen.

Gruß
L00NIX