SchwarzerEngel Geschrieben 15. April 2011 Teilen Geschrieben 15. April 2011 Hallo zusammen, ich verwende momentan "logrotate", um einige LOGs im Rahmen zu halten, weil der dazugehörige Dienst teils mehrere Wochen durchläuft und sich somit im Laufe der Zeit doch einige Daten ansammeln. Die dazugehörige conf-Datei sieht folgendermaßen aus: # see "man logrotate" for details # rotate log files weekly daily # keep 5 days worth of backlogs rotate 3 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # uncomment these to switch compression to bzip2 compresscmd /usr/bin/bzip2 uncompresscmd /usr/bin/bunzip2 # former versions had to have the compresscommand set accordingly compressext .bz2 # RPM packages drop log rotation information into this directory include /etc/logrotate.d # In diesem Abschnitt wird das Rotieren der Log-datei ServerOutput.log im Verzeichnis /usr/local/netphantom # definiert. Diese Datei wird täglich (daily) rotiert, drei Versionen (rotate 3) werden aufgehoben /usr/local/netphantom/ServerOutput.log { daily copytruncate rotate 3 compress } /usr/local/netphantom/LicMgrOutput.log { daily copytruncate rotate 3 compress } Ich muss hier (denke ich?) mit "copytruncate" arbeiten, da ich dem Prozess im laufenden Betrieb die Logdatei nicht "unterm Allerwertesten" wegziehen kann. Tue ich das, dann werden keine Logs mehr in die neue Datei geschrieben, was nicht Sinn der Sache ist. Nun die Frage: Die Funktionalität ist soweit gegeben. Allerdings hat meine Log-Datei nun trotzdem wieder die 100MB überschritten. Ich dachte, dass aus der Log-Datei die Daten rausgezogen und ausgelagert werden und die Datei um diese Daten gekürzt wird. Das scheint zwar wohl der Fall zu sein (zumindest habe ich die letzten drei gepackten Sicherungsdateien), aber es werden immer nur ein paar Kilobyte an Daten ausgelagert - egal, wie groß die Logdatei bereits ist! Kann ich irgendwie angeben, dass er bspw. 70% auslagern soll? Es wäre sogar okay, wenn er alle Daten der letzten 24 Stunden (läuft ja sowieso "daily") auslagert und mit einer leeren Datei weiter macht (ohne jedoch das Orginal-LOG zu schließen). Weiß da jemand Rat? Vielen Dank im Voraus. Greetz S.E. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 15. April 2011 Autor Teilen Geschrieben 15. April 2011 Sorry, wenn ich mich selbst zitiere, aber: Es wäre sogar okay, wenn er alle Daten der letzten 24 Stunden [...] auslagert und mit einer leeren Datei weiter macht (ohne jedoch das Orginal-LOG zu schließen). Genau das sollte "copytruncate" doch ohnehin machen? Überall steht, dass das Orginal-Log auf die Länge 0 abgeschnitten wird und die Daten in eine neue Datei ausgelagert werden. Was läuft also falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schepp Geschrieben 15. April 2011 Teilen Geschrieben 15. April 2011 Ja, mit copytruncate sollte er wieder bei 0 Byte anfangen. Bei mir klappt es auch wunderbar. Ich vermute, dass dein Dienst die Logdatei in einer Art und weise öffnet, die es für logrotate unmöglich macht die alten Einträge rauszuziehen. Kannst du den Dienst kurz stoppen, bzw. eine 2. Instanz zum Testen erstellen, und im gestoppten Zustand logrotate manuell ausführen um zu sehen ob er dann wieder bei 0 anfängt? Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 15. April 2011 Autor Teilen Geschrieben 15. April 2011 [...] Kannst du den Dienst kurz stoppen, bzw. eine 2. Instanz zum Testen erstellen, und im gestoppten Zustand logrotate manuell ausführen um zu sehen ob er dann wieder bei 0 anfängt? Eben auf dem Testserver ausprobiert. Ja, wenn der Dienst nicht läuft, dann beginnt die Datei wieder bei 0. Allerdings könnte ich dann auch "create" verwenden, wenn ich den Dienst sowieso stoppen muss. Ich habe mir daher überlegt, einen Cron zu basteln, welcher den Prozess nachts stoppt, den Logrotate durchführt und den Prozess anschließend wieder startet. Ist wahrscheinlich ohnehin sinnvoller so. Danke! Greetz S.E. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 15. April 2011 Teilen Geschrieben 15. April 2011 logrotate kennt die Optionen prerotate/postrotate damit sollte das funktionieren. LOGROTATE(1) Handbuchseite Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.