Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Verwendung von "logrotate"

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

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?

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ß

  • Autor
[...]

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.