GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Centos/Linux-Einstellung logrotate auf maximale Dateigröße für alle Protokolle

Wie von Zeeshan erwähnt, sind die logrotate-Optionen size , minsize , maxsize sind Auslöser für Rotation.

Um es besser zu erklären. Sie können logrotate so oft ausführen, wie Sie möchten, aber wenn ein Schwellenwert nicht erreicht wird, wie z. B. die erreichte Dateigröße oder die entsprechende Zeit verstrichen ist, werden die Protokolle nicht rotiert.

Die Größenoptionen stellen nicht sicher, dass Ihre gedrehten Protokolle auch die angegebene Größe haben. Um sie in die Nähe der angegebenen Größe zu bringen, müssen Sie das Programm logrotate ausreichend oft aufrufen. Dies ist von entscheidender Bedeutung.

Für Protokolldateien, die sich sehr schnell aufbauen (z. B. Hunderte von MB pro Tag), müssen Sie sicherstellen, dass logrotate häufig aufgerufen wird, es sei denn, Sie möchten, dass sie sehr groß werden! das ist entscheidend.

Um zu verhindern, dass sich Ihre Festplatte mit Multi-Gigabyte-Protokolldateien füllt, müssen Sie daher sicherstellen, dass logrotate oft genug aufgerufen wird, da die Protokollrotation sonst nicht so gut funktioniert, wie Sie es möchten.

Unter Ubuntu können Sie ganz einfach auf stündliche Rotation umschalten, indem Sie das Skript /etc/cron.daily/logrotate nach /etc/cron.hourly/logrotate

verschieben

Oder fügen Sie

hinzu
*/5 * * * * /etc/cron.daily/logrotate 

In Ihre /etc/crontab-Datei. Um es alle 5 Minuten auszuführen.

Die size ignoriert die täglichen, wöchentlichen und monatlichen Zeitoptionen. Aber minsize &maxsize berücksichtigen es.

Die Manpage ist dort etwas verwirrend. Hier ist meine Erklärung.

minsize rotiert erst, wenn die Datei eine angemessene Größe erreicht hat und die eingestellte Zeitspanne verstrichen ist. z.B. Mindestgröße 50 MB + täglich Wenn die Datei vor Ablauf der Tageszeit 50 MB erreicht, wächst sie bis zum nächsten Tag weiter.

maxsize rotiert, wenn das Protokoll eine festgelegte Größe erreicht oder die entsprechende Zeit verstrichen ist. z.B. maxsize 50 MB + täglich. Wenn die Datei 50 MB groß ist und wir noch nicht am nächsten Tag sind, wird das Protokoll rotiert. Wenn die Datei nur 20 MB groß ist und wir auf den nächsten Tag übergehen, wird die Datei rotiert.

size dreht sich, wenn das Protokoll> Größe ist. Unabhängig davon, ob stündlich/täglich/wöchentlich/monatlich angegeben ist. Wenn Sie also eine Größe von 100 MB haben, bedeutet dies, dass das Protokoll rotiert wird, wenn Ihre Protokolldatei> 100 MB ist, wenn logrotate ausgeführt wird, wenn diese Bedingung erfüllt ist. Sobald es rotiert ist, ist das Hauptprotokoll 0, und ein nachfolgender Lauf wird nichts bewirken.

Also im OP-Fall. Insbesondere 50 MB max. Ich würde so etwas wie das Folgende verwenden:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Was bedeutet, dass er maximal 8 Stunden Protokolle erstellen würde. Und es gäbe 8 von ihnen mit jeweils nicht mehr als 50 MB. Da er sagt, dass er jeden Tag mehrere Gigabyte bekommt und davon ausgeht, dass sie sich mit einer ziemlich konstanten Rate aufbauen und Maxsize verwendet wird, wird er am Ende ungefähr das Maximum erreichen, das für jede Datei erreicht wird. Sie werden also wahrscheinlich jeweils fast 50 MB groß sein. Angesichts des Volumens, das sie aufbauen, müsste er sicherstellen, dass logrotate oft genug ausgeführt wird, um die Zielgröße zu erreichen.

Da ich dort stündlich geschrieben habe, müsste logrotate mindestens jede Stunde ausgeführt werden. Aber da sie sich auf sagen wir 2 Gigabyte pro Tag aufbauen und wir 50 MB wollen ... unter der Annahme einer konstanten Rate von 83 MB pro Stunde. Sie können sich also vorstellen, wenn wir logrotate jede Stunde ausführen, obwohl wir maxsize auf 50 setzen, werden wir in diesem Fall mit 83 MB Protokollen enden. In diesem Fall sollte es also ausreichen, den Betrieb auf alle 30 Minuten oder weniger einzustellen.

Stellen Sie sicher, dass logrotate alle 30 Minuten ausgeführt wird.

*/30 * * * * /etc/cron.daily/logrotate 

Es gibt die Größe der Protokolldatei an Rotation auszulösen. Zum Beispiel size 50M löst eine Protokollrotation aus, sobald die Datei eine Größe von 50 MB oder mehr hat. Sie können das Suffix M verwenden für Megabyte k für Kilobyte und G für Gigabyte. Wenn kein Suffix verwendet wird, bedeutet es Bytes. Sie können das Beispiel am Ende überprüfen. Es sind drei Direktiven verfügbar size , maxsize , und minsize . Laut Manpage:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Hier ist ein Beispiel:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Hier ist eine Erklärung für beide Dateien /var/log/httpd/access.log und /var/log/httpd/error.log . Sie werden rotiert, wenn die Größe über 100 KB ansteigt, und die alten Protokolldateien werden (unkomprimiert) an [email protected] gemailt nach 5 Umdrehungen, anstatt entfernt zu werden. Die sharedscripts bedeutet, dass die postrotate Das Skript wird nur einmal ausgeführt (nachdem die alten Protokolle komprimiert wurden), nicht einmal für jedes rotierte Protokoll. Beachten Sie, dass die doppelten Anführungszeichen um den ersten Dateinamen am Anfang dieses Abschnitts es logrotate ermöglichen, Protokolle mit Leerzeichen im Namen zu rotieren. Es gelten die normalen Shell-Quoting-Regeln mit , , und \ Zeichen unterstützt.


Linux
  1. Welche Dateikomprimierungssoftware für Linux bietet die höchste Größenreduzierung?

  2. Android File Transfer für Linux – Senden Sie Dateien ohne Größenbeschränkung an Linux

  3. Systemprotokolldatei /var/log/messages wird automatisch gelöscht oder gekürzt (CentOS/RHEL)

  4. CentOS / RHEL :So rotieren Sie /var/log/wtmp- und /var/log/btmp-Dateien mit logrotate

  5. Alle Linux-Befehle zum Komprimieren/Dekomprimieren

10 Beispiele für Linux-Cat-Befehle für Anfänger

Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

ls-Befehl in Linux zum Auflisten von Dateien

Logrotate unter Linux einrichten

Reduzieren Sie die PDF-Dateigröße unter Linux

Maximale PID unter Linux