[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Shellscript in /etc/cron.daily



On 20.02.06 21:48:03, Gerhard Gaußling wrote:
> Am Montag, 20. Februar 2006 01:58 schrieb Andreas Pakulat:
> > On 20.02.06 01:32:01, Gerhard Gaußling wrote:
> > > Am Sonntag, 19. Februar 2006 21:34 schrieb Al Bogner:
> Reibungslos war die Übertragung halt doch nicht, wohl weil auf dem 
> neuen server kein rudimentäres Basissystem installiert war, sondern 
> u.a. auch Pakete aus fremden Quellen.

Tja, deswegen hatte ich das zum Anlass genommen bei meinem root-Server
mal endlich debootstrap kennen zu lernen. Allerdings hatte ich auch
keinen Zeitdruck, da das eh nur meine private Seite ist und wenn die
statt 5 Tage 3 Wochen offline ist ist es halt so...

> > > und die Zeilen die mit `test -e /usr/sbin/anachron || run-parts` in
> > > der crontab beginnen werden trotzdem ausgeführt.
> s.o. auf dem alten server werden alle /etc/cron.x Verzeichnisse von 
> run-parts abgearbeitet, _ohne_ dass es die datei /usr/sbin/anacron 
> gibt, was nach Deiner folgenden Ausführung garnicht passieren dürfte:

Hae? Doch, sag mal kennst du Shell-Syntax und die Spezifika von ||
nicht? Er fuehrt zuerst "test -e /usr/sbin/anachron" aus, was auf einem
System auf dem anachron nicht installiert ist zu "false" evaluiert (test
-e testet auf Existenz der Datei). Nun haben wir da aber ein ||, welches
bedeutet wenn der linke Operand zu false evaluiert wird der rechte
ausgefuehrt. Sprich wenn anachron nicht installiert ist wird run-parts
... ausgefuehrt.

> > Das liegt daran das der 1. Teil zu "false" evaluiert wenn anachron
> > nicht vorhanden ist und demzufolge der 2. Teil des oder ausgefuehrt
> > wird. Das bedeutet hier, dass run-parts durchlaeuft und alle Skripte
> > in /etc/cron.daily aufrufen sollte.
> >
> > BTW: Was hast du an der crontab rumgeschraubt? Normalerweise steht
> > da:
> >
> > test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
> Nicht das ich wüsste. Wie gesagt sind alle Einträge auf beifden servern 
> identisch, nur verhalten sie sich anders.

Das waere extrem bedenklich. Kannst du mal in einer normalen Shell auf
dem neuen Server

test -e blahblub || echo "Geht" 

ausfuehren? Wenn dabei "Geht" zurueckgeliefert wird sollten auch die
crontab-Eintraege gehen. Wenn nicht ist dein test kaputt und liefert
immer true zurueck (wenn der linke Operand von || bereits true liefert
wird der rechte nicht ausgefuehrt). Dann solltest du mal schauen was
fuer eine Shell da benutzt wird und ob which test etwas liefert oder ob
das ein Shell-Builtin ist bei dir. In jedem Fall wuerde ich das
zugehoerige Paket neu installieren.

> > Damit sichergestellt ist, dass anacron nicht nur existiert sondern
> > auch ausfuehrbar ist. Jedenfalls auf Sarge-Systemen, wie das bei
> > Woody war weiss ich nicht.
> Ok, leuchtet ein, ich hatte das system damals von woody auf sarge 
> gebracht, was eventuell den #Unterschied zu sarge erklären könnte, da 
> ich nach kurzem durchsehen (D) oft mit N die alte version beibehalte 
> (debconf Fragen).

Das ist natuerlich moeglich, ich hab kein woody-System und kann das
daher nicht pruefen...

> Vielleicht ist es auch der falsche Ansatz die crontab auf +2 min zu 
> setzen /etc/init.d/cron restart aufzurufen, und eineinhalb Minute zu 
> warten ;) Mit run-parts --test lief alles _ohne_ fehler durch.

Ja unter Umstaenden ist das keine so gute Idee. Du solltest wohl eher
ein stop machen und dann schauen ob noch irgendwelche Prozesse laufen
von cron, logrotate usw.

Davon abgesehen wuerde mich obiges Shell-Problem wirklich interessieren.
Hast du nun eigentlich anacron auf dem System installiert? Das fuehrt
naemlich auch evtl. auch zu Problemen weil dann die crontab-Zeilen gar
nicht mehr ausgefuehrt werden (also der rechte Operand, aka run-parts).

Andreas

-- 
You will gain money by an illegal action.



Reply to: