Tach die Runde, SuSE hat offenbar das Konzept bezüglich /etc/cron. {hourly;daily;weekly;monthly} geändert. Früher konnte man in der etc/crontab sehen und verändern, zu welcher Zeit diese Skripten abgearbeitet wurden. Jetzt ist dafür /usr/lib/cron/run-crons zuständig. Kann mir jemand erklären, woraus sich ergibt, zu welcher Zeit die Skripten laufen, wenn die Maschine 24h läuft? Vermutlich ist dafür die Passage ab Zeile 74 zuständig. Aber ich erkenne nicht, woraus sich die Uhrzeit ergibt, falls die Maschine nie ausgeschaltet wird. Bitte um Aufklärung. Andy -- Antworten an lists@feile.net werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
Hallo Andreas, hallo Leute, Am Dienstag, 12. April 2005 16:00 schrieb Andreas Feile:
SuSE hat offenbar das Konzept bezüglich /etc/cron. {hourly;daily;weekly;monthly} geändert. Früher konnte man in der etc/crontab sehen und verändern, zu welcher Zeit diese Skripten abgearbeitet wurden.
Jepp. Kann man (eingeschränkt) immer noch - ich habe z. B. /etc/crontab so verändert, dass die cron.{hourly,daily,usw.} nicht zwischen 0 und 5 Uhr ausgeführt werden. Das geht durch Ersetzen des Stunden-* durch die Angabe 6-23 ;-)
Jetzt ist dafür /usr/lib/cron/run-crons zuständig. Kann mir jemand erklären, woraus sich ergibt, zu welcher Zeit die Skripten laufen, wenn die Maschine 24h läuft? Vermutlich ist dafür die Passage ab Zeile 74 zuständig. Aber ich erkenne nicht, woraus sich die Uhrzeit ergibt, falls die Maschine nie ausgeschaltet wird.
Schau mer mal: Die relevante Zeile ist eval find $SPOOL/$BASE $TIME | \ xargs --no-run-if-empty rm $SPOOL wird am Scriptanfang definiert: SPOOL=/var/spool/cron/lastrun $BASE ist cron.hourly oder cron.daily usw., wie man am Block case $BASE in cron.hourly) # usw. ablesen kann. Und $TIME? Das wird im genannten case-Block gesetzt: cron.hourly) TIME="-cmin +60 -or -cmin 60" ;; cron.daily) TIME="-ctime +1 -or -ctime 1" ;; cron.weekly) TIME="-ctime +7 -or -ctime 7" ;; find findet (und löscht) dann die Dateien in /var/spool/cron/lastrun nur, wenn diese ein gewisses Mindestalter erreicht haben. Dieses Mindestalter ist logischerweise 60 Minuten für cron.hourly, 1 Tag für cron.daily und 7 Tage für cron.weekly. cron.monthly ist etwas Rechenarbeit, wie im Script zu sehen ist. Fazit: Der Ausführungszeitpunkt hängt davon ab, wann der letzte Durchlauf stattgefunden hat. Um den Zeitpunkt manuell zu ändern, sollte ein Löschen der Dateien in /var/spool/cron/lastrun kurz vor dem gewünschten Zeitpunkt helfen ;-) Gruß Christian Boltz -- Das soll jetzt wirklich keine Arroganz sein, aber es macht keinen Sinn, das Haus abzureissen, weil du den Hausschlüssel vergessen hast. :-) [Ratti in suse-linux]
Christian Boltz, Dienstag, 12. April 2005 22:34:
Jepp. Kann man (eingeschränkt) immer noch - ich habe z. B. /etc/crontab so verändert, dass die cron.{hourly,daily,usw.} nicht zwischen 0 und 5 Uhr ausgeführt werden. Das geht durch Ersetzen des Stunden-* durch die Angabe 6-23 ;-)
Hm, dabei würde ich es gern gerade so haben, daß die Jobs nachts laufen, sofern die Maschine an ist.
Fazit: Der Ausführungszeitpunkt hängt davon ab, wann der letzte Durchlauf stattgefunden hat.
Und wiederum Fazit: der Ausführungszeitpunkt ist nicht fix, sofern die Maschine dauernd läuft.
Um den Zeitpunkt manuell zu ändern, sollte ein Löschen der Dateien in /var/spool/cron/lastrun kurz vor dem gewünschten Zeitpunkt helfen ;-)
OK, so könnte man sich helfen, stimmt. Werde ich auch tun müssen, denn bei einem Server müssen die Backups usw. natürlich des Nachts laufen, und nicht irgendwann zufällig dann, wenn die Kiste n*24 Stunden vorher gebootet wurde. Danke für die Erklärungen! Andy -- Antworten an lists@feile.net werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
participants (2)
-
Andreas Feile
-
Christian Boltz