Marc Reichelt: Logfile einfach kopieren und leeren

Beitrag lesen

Hallo RFZ,

ich werf das jetzt einfach mal in den Raum, weil ich mich direkt wunder wieviel Umstände sich hier manche machen...
Ich handhabe das auf meinem Server so, dass nachts die Logfiles einfach ausgelesen und in eine neue Datei mit Datum versehen geschrieben werden. Danach schreibe ich schlichtweg einen leeren String in die Log-Datei des Apachen.
Das alles funktioniert problemlos, obwohl der Apache dabei läuft.

Fast richtig. Das alles funktioniert problemlos, solange nicht der unwahrscheinliche (aber mögliche) Fall eintritt, dass ein Prozess schreibt während der andere liest.

Mir ist klar, dass in der Zeit wo ich die Logdatei kopiere und sie dann lösche theoretisch ein neuer Eintrag eingetragen worden sein kann, aber damit kann ich leben - die Chance dazu ist auf meinem Server nachts sehr gering.

Wo ist der Fehler, den ich hier mache?

Im glücklichen Fall passiert dann das, was du vorhergesagt hast: Es gehen Informationen verloren.
Wenn du Pech hast kannst du hierdurch aber etwa fehlerhafte Log-Einträge erzeugen (die beispielsweise in der Mitte abgeschnitten sind) und die dann dem Log-File-Auswerter Probleme machen könnten.
Im schlimmsten Fall könnte eventuell Apache abstürzen (bitte korrigiert mich falls dies so nicht stimmt).

Sagen wir mal so: Hier siehst du, wie du es besser machen kannst - also pass deine Skripte doch bei Gelegenheit einfach an, um unwahrscheinliche aber mögliche Ungereimtheiten schon jetzt aus dem Weg zu räumen. :-)

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)