expertenaustausch > linux.debian.user.german

Jan Kolarik (11.08.2007, 10:00)
Hallo,

In /etc/cron.daily/ stehen Programme, die täglich ausgeführt werden
sollen. U.a. gibts da "apticron", das eine Zusammenfassung der
ausstehenden Updates erstellen soll.

Der Inhalt dieses Skripts:
--------------------------------------------
#!/bin/sh

RANGE=3600
number=`od -vAn -N2 -tu4 < /dev/urandom`

number=`expr $number "%" $RANGE`
sleep $number
test -x /usr/sbin/apticron || exit 0
/usr/sbin/apticron
--------------------------------------------

Soweit ich diese Zeilen verstehe wird vor dem Aufruf von "apticron" bis zu
einer Stunde Däumchen gedreht. Weiß jemand weshalb? Vermutlich liegt die
Begründung im Befehl "od ..." den ich aber nicht so recht verstehe.

Hintergrund bzw. Details: Morgens vor der Fahrt in die Arbeit schalte ich
meinen Rechner für ca. 10min an um online ein paar Sachen nachzuschauen.

Nach 5 min startet anacron nacheinender die Skripts in /etc/cron.daily/.
Als erstes wird dabei gleich mal der Timestamp in
/var/spool/anacron/cron.daily aktualisiert; dieser besagt: "Hinweis für
anacron: Für heute (timestamp) hast du deine Arbeit erledigt. Sollte der
Rechner heute nochmal gestartet werden, mußt du also nicht noch einmal
ran."

Problem: Wenn ich nach ca. 10min meinen Rechner wieder ausschalte, sind
die Skripte in /etc/cron.daily/ aber noch nicht mal zur Hälfte
abgearbeitet, anacron hat seine Arbeit also begonnen, von erledigt (s.
timestamp) kann aber keine Rede sein. Während der ganzen Arbeitswoche
kommen also etliche cron.daily-Skripts nie zur Ausführung, obweohl der
Rechner, wenn ich ihn nach Feierabend wieder hochfahre, durchaus noch ein
paar Stunden Zeit dazu hätte.

/etc/cron.daily/find, das bei mir eine gute halbe Stunde braucht, hab ich
schon nach /etc/cron.weekly verschoben.

Andere Lösungsmöglichkeiten:

"anacron -f" (Force execution of the jobs, ignoring the timestamps): Dann
wird cron.daily u.U. mehrmals pro Tag ausgeführt. Will ich eigentlich
nicht.

"anacron -s" (Serialize execution of jobs): "-s" weglassen. Mmh,
eigentlich will ich ja nicht in irgendwelchen vorgegebenen Skripts
rumpfuschen.

Skripte in /etc/cron.daily/ umordnen, so daß die schnell abgearbeiteten
zuerst drankommen?

Wie tut ihr da, bzw. was würdet ihr empfehlen (für den Fall daß sich die
o.a. Frage mit dem "sleep" nicht klären lässt)?

PS: Sorry, bin mal wieder etwas ausfürlich geraten :-o

Jan
Jan Kolarik (11.08.2007, 11:00)
Am Sat, 11 Aug 2007 hat Thomas Kosch folgendes geschrieben:

> Dann versuche dir mal vorzustellen was passiert wenn da bei 1000 Rechnern,
> die alle den selben Debian Mirror benutzen plötzlich morgens um 6.25
> gleichzeitig apticron anspringt.


Aaaaahja! Das klingt plausibel. Danke für den Hinweis!

Jan.
Uwe Kerstan (11.08.2007, 11:10)
* Jan Kolarik [11-08-2007 09:36]:

> Hintergrund bzw. Details: Morgens vor der Fahrt in die Arbeit schalte ich
> meinen Rechner für ca. 10min an um online ein paar Sachen nachzuschauen.


Hallo Jan,

wenn du immer um die gleiche Zeit zur Arbeit fährst, würde ich
verhindern, dass zu dieser Zeit anacron startet. Du könntest
das Initscript von anacron anpassen.

case `date +%-H` in
6|7|8|9|10) echo "Bin auf dem Weg zur Arbeit"
exit 0
esac

Eventuell kannst du noch deine Wochentage reinbasteln.
Peter Greff (11.08.2007, 14:20)
Am Sat, 11 Aug 2007 09:36:51 +0200 schrieb Jan Kolarik:

[..]
> die Skripte in /etc/cron.daily/ aber noch nicht mal zur Hälfte
> abgearbeitet, anacron hat seine Arbeit also begonnen, von erledigt (s.
> timestamp) kann aber keine Rede sein. [...]


Vielleicht solltest Du Deine "Zeitarbeit" auf fcron umstellen:

###
%daily 0 9-23 run-parts /etc/cron.daily
###

Diese Zeile in der systemweiten crontab-Datei veranlasst fron cron.daily
jeden Tag zwischen 9 u. 23 Uhr auszuführen. Fcron merkt sich auch
verpasste Jobs wie z.B. das monatliche BackUp vom Vortag und holt somit
Versäumtes nach. Fcron ersetzt dabei anacron wie auch den Vixie-Cron.

Gruß
Peter
Ähnliche Themen