Cronjob-Frage

Hallo,

an folgendem Vorhaben bin ich bis jetzt gescheitert: ich will ein script alle 5 Stunden laufen lassen. Also so, daß es um 5:00 Uhr, dann um 10:00, 15:00, 20:00 und dann, darauf kommt’s an, um 01:00, 06:00, usw. ausgeführt wird. Damit will ich erreichen, daß es mal an allen Uhrzeiten „vorbeikommt“. Der Crontab steht jetzt auf:

0 \*/5 \* \* \*

Nun ist es aber so, daß das script nach jedem Tag wieder um 0:00 Uhr startet, ich also doch immer dieselben Uhrzeiten abfrage…

Ich hoffe, ich habe mich nicht allzu unklar ausgedrückt…

Das System ist SuSe 10.2.

Ich hab keine Erfahrung mit Cronjobs - gibt es eine Möglichkeit, meine Idee doch umzusetzen?

Vielen Dank und viele Grüße,

Juan

an folgendem Vorhaben bin ich bis jetzt gescheitert: ich will
ein script alle 5 Stunden laufen lassen. Also so, daß es um
5:00 Uhr, dann um 10:00, 15:00, 20:00 und dann, darauf kommt’s
an, um 01:00, 06:00, usw. ausgeführt wird. Damit will ich
erreichen, daß es mal an allen Uhrzeiten „vorbeikommt“. Der
Crontab steht jetzt auf:

0 */5 * * *

In der Manpage steht dazu

 Step values can be used in conjunction with ranges. Following a
 range with ``/'' specifies skips of the number's value
 through the range. For example, ``0-23/2'' can be used in the hours
 field to specify command execution every other hour (the alternative
 in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22''). Steps are
 also permitted after an asterisk, so if you want to say ``every two
 hours'', just use ``\*/2''.

*/5 ist eine Abkürzung für 0,5,10,15,20

Was du vor hast ist nur mit einem Crontab-Eintrag nicht (direkt) möglich. Bei dem was du vor hast, haben die vergangenen Einträge Einfluss darauf wie zukünftige ausgeführt werden… Um das ganze eindeutig zu machen, müsstes du schon mal definieren, zu welchem Tag auf 0 Uhr das ausgeführt werden würden.

Mir würde da nur als Lösungsmöglichkeit einfallen, einen Cronjob für jede Stunde auszuführen, der ein Skript startet, dass testet, ob gerade der Befehl ausgeführt werden soll. Außer du definierst jetzt für jedem Tag im Jahr, wie das ausgeführt werden soll.

Wofür soll das ganze eigentlich gut sein? Kannst du dein Skript nicht jeden Tag zur selben Uhrzeit ausführen: Bei alle 6 Stunden geht dies einfach, sonst musst du die einzelnen Uhrzeiten auflisten.

Vielen Dank für Eure Antworten,

am sinnvollsten scheint mir die Lösung zu sein, das script stündlich aufzurufen und es dann selbst entscheiden zu lassen, ob es durchläuft.

Ich will die Spieler eines Online-Rollenspiels tracken, ohne zuviel Daten anzuhäufen. Da die Spieler aus verschiedenen Zeitzonen kommen, will ich zu verschiedenen Uhrzeiten prüfen, um wenigsten einigermaßen hochrechenbare Daten zu bekommen.

Nochmal vielen Dank und viele Grüße,

Juan

an folgendem Vorhaben bin ich bis jetzt gescheitert: ich will
ein script alle 5 Stunden laufen lassen. Also so, daß es um
5:00 Uhr, dann um 10:00, 15:00, 20:00 und dann, darauf kommt’s
an, um 01:00, 06:00, usw. ausgeführt wird. Damit will ich
erreichen, daß es mal an allen Uhrzeiten „vorbeikommt“. Der
Crontab steht jetzt auf:

> > 0 \*/5 \* \* \*

Nimm doch einfach fcron. Da kann man sowas wie

 @ 4h /usr/local/bin/job.sh

hinschreiben. Nein, ich weiss nicht, ob man die genaue Uhrzeit festlegen kann, zu denen das laeuft. Wenn ich den Anwendungsfall richtig verstanden habe, ist das aber auch nicht notwendig.

Wofür soll das ganze eigentlich gut sein?

Weil es denkbar unguenstig ist, dass in einem zeitsynchronem Netzwerk ploetzlich alle Rechner zur vollen Stunde anfangen, irgendwelche cronjobs durchzunudeln, aber eigentlich was produktives machen sollen.

Gruss vom Frank.