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

HowTo:Das ultimative Logrotate-Befehls-Tutorial mit 10 Beispielen

Die effektive Verwaltung von Protokolldateien ist eine wesentliche Aufgabe für den Linux-Systemadministrator.

Lassen Sie uns in diesem Artikel diskutieren, wie Sie die folgenden Protokolldateioperationen mit UNIX logrotate ausführen Dienstprogramm.

  • Drehen Sie die Protokolldatei, wenn die Dateigröße eine bestimmte Größe erreicht
  • Fahren Sie fort, die Protokollinformationen in die neu erstellte Datei zu schreiben, nachdem Sie die alte Protokolldatei rotiert haben
  • Komprimieren Sie die rotierten Protokolldateien
  • Komprimierungsoption für die rotierten Protokolldateien angeben
  • Rotieren Sie die alten Protokolldateien mit dem Datum im Dateinamen
  • Führen Sie benutzerdefinierte Shell-Skripte sofort nach der Protokollrotation aus
  • Ältere rotierte Protokolldateien entfernen

1. Logrotate-Konfigurationsdateien

Im Folgenden sind die Schlüsseldateien aufgeführt, die Sie kennen sollten, damit logrotate ordnungsgemäß funktioniert.

/usr/sbin/logrotate – Der logrotate-Befehl selbst.

/etc/cron.daily/logrotat e – Dieses Shell-Skript führt jeden Tag den Befehl logrotate aus.

$ cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/logrotate.conf – Protokollrotationskonfiguration für alle Protokolldateien sind in dieser Datei angegeben.

$ cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

/etc/logrotate.d – Wenn einzelne Pakete auf dem System installiert werden, legen sie die Konfigurationsinformationen für die Protokollrotation in diesem Verzeichnis ab. Beispielsweise werden die Konfigurationsinformationen für die Yum-Protokollrotation unten angezeigt.

$ cat /etc/logrotate.d/yum
/var/log/yum.log {
    missingok
    notifempty
    size 30k
    yearly
    create 0600 root root
}

2. Logrotate-Größenoption:Dreht die Logdatei, wenn die Dateigröße ein bestimmtes Limit erreicht

Wenn Sie eine Protokolldatei (z. B. /tmp/output.log) für jeweils 1 KB rotieren möchten, erstellen Sie die logrotate.conf wie unten gezeigt.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        create 700 bala bala
        rotate 4
}

Diese Logrotate-Konfiguration hat die folgenden drei Optionen:

  • Größe 1k – logrotate wird nur ausgeführt, wenn die Dateigröße gleich (oder größer) als diese Größe ist.
  • Erstellen – Drehen Sie die Originaldatei und erstellen Sie die neue Datei mit der angegebenen Berechtigung, dem Benutzer und der Gruppe.
  • rotate – begrenzt die Anzahl der Protokolldateirotationen. Dies würde also nur die letzten 4 rotierten Protokolldateien behalten.

Vor der Logrotation ist die Größe des output.log:

$ ls -l /tmp/output.log
-rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log

Führen Sie nun den Befehl logrotate wie unten gezeigt aus. Option -s gibt den Dateinamen zum Schreiben des Logrotate-Status an.

$ logrotate -s /var/log/logstatus logrotate.conf

Hinweis:Wann immer Sie für einige Dateien eine Log-Rotation benötigen, bereiten Sie die Logrotate-Konfiguration vor und führen Sie den Logroate-Befehl manuell aus.
Nach der Logrotation ist die Größe der Ausgabe.log wie folgt:

$ ls -l /tmp/output*
-rw-r--r--  1 bala bala 25868 2010-06-09 21:20 output.log.1
-rwx------ 1 bala bala        0 2010-06-09 21:20 output.log

Letztendlich wird dies nach der Einrichtung von rotierten Protokolldateien beibehalten.

  • output.log.4.
  • output.log.3
  • ausgabe.log.2
  • ausgabe.log.1
  • Ausgabe.log

Bitte denken Sie daran, dass nach der Protokollrotation die Protokolldatei, die dem Dienst entspricht, immer noch auf die rotierte Datei (output.log.1) zeigen würde und weiter in sie schreiben würde. Sie können die obige Methode verwenden, wenn Sie den Apache rotieren möchten access_log oder error_log alle 5 MB.

Idealerweise sollten Sie /etc/logrotate.conf ändern, um die logrotate-Informationen für eine bestimmte Protokolldatei anzugeben.

Wenn Sie riesige Protokolldateien haben, können Sie auch Folgendes verwenden:10 fantastische Beispiele zum Anzeigen riesiger Protokolldateien in Unix

3. Option Logrotate copytruncate:Schreibt die Log-Informationen weiterhin in die neu erstellte Datei, nachdem die alte Log-Datei rotiert wurde.

$ cat logrotate.conf
/tmp/output.log {
         size 1k
         copytruncate
         rotate 4
}

copytruncate weist logrotate an, eine Kopie der Originaldatei zu erstellen (d. h. die ursprüngliche Protokolldatei zu drehen) und die Originaldatei auf eine Größe von null Byte zu kürzen. Dies hilft dem jeweiligen Dienst, der zu dieser Protokolldatei gehört, in die richtige Datei zu schreiben.

Beim Bearbeiten von Protokolldateien finden Sie möglicherweise den sed-Ersatz, sed delete tips hilfreich.

4. Logrotate-Komprimierungsoption:Komprimiert die rotierten Protokolldateien

Wenn Sie die Komprimierungsoption wie unten gezeigt verwenden, werden die rotierten Dateien mit dem gzip-Dienstprogramm komprimiert.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        rotate 4
        compress
}

Ausgabe der komprimierten Protokolldatei:

$ ls /tmp/output*
output.log.1.gz output.log

5. Logrotate dateext Option:Rotiert die alte Logdatei mit Datum im Logdateinamen

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        dateext
        rotate 4
        compress
}

Nach der obigen Konfiguration sehen Sie das Datum in der rotierten Protokolldatei, wie unten gezeigt.

$ ls -lrt /tmp/output*
-rw-r--r--  1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz
-rwxrwxrwx 1 bala bala     0 2010-06-09 22:11 output.log

Dies würde nur einmal am Tag funktionieren. Denn wenn es das nächste Mal versucht, am selben Tag zu rotieren, wird die früher rotierte Datei denselben Dateinamen haben. Das Logrotate wird also nach dem ersten Lauf am selben Tag nicht erfolgreich sein.

Normalerweise können Sie tail -f verwenden, um die Ausgabe der Protokolldatei in Echtzeit anzuzeigen. Sie können sogar mehrere tail -f-Ausgaben kombinieren und auf einem einzigen Terminal anzeigen.

6. Logrotate monatlich, täglich, wöchentlich Option:Rotiert die Protokolldatei wöchentlich/täglich/monatlich

Für die einmalige monatliche Rotation,

$ cat logrotate.conf
/tmp/output.log {
        monthly
        copytruncate
        rotate 4
        compress
}

Fügen Sie das wöchentliche Schlüsselwort wie unten gezeigt für die wöchentliche Protokollrotation hinzu.

$ cat logrotate.conf
/tmp/output.log {
        weekly
        copytruncate
        rotate 4
        compress
}

Fügen Sie das tägliche Schlüsselwort wie unten gezeigt für die tägliche Protokollrotation hinzu. Sie können Protokolle auch stündlich rotieren.

$ cat logrotate.conf
/tmp/output.log {
        daily
        copytruncate
        rotate 4
        compress
}

7. Logrotate postrotate Endscript-Option:Benutzerdefinierte Shell-Skripte sofort nach der Log-Rotation ausführen

Mit Logrotate können Sie Ihre eigenen benutzerdefinierten Shell-Skripte ausführen, nachdem die Protokolldateirotation abgeschlossen ist. Die folgende Konfiguration gibt an, dass myscript.sh nach der Logrotation ausgeführt wird.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        postrotate
               /home/bala/myscript.sh
        endscript
}

8. Logrotate-Maxage-Option:Ältere rotierte Logdateien entfernen

Logrotate entfernt automatisch die rotierten Dateien nach einer bestimmten Anzahl von Tagen. Das folgende Beispiel zeigt, dass die rotierten Protokolldateien nach 100 Tagen entfernt würden.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        maxage 100
}

9. Option Logrotate missingok:Gibt keinen Fehler zurück, wenn die Protokolldatei fehlt

Sie können die Fehlermeldung ignorieren, wenn die eigentliche Datei nicht verfügbar ist, indem Sie diese Option wie unten gezeigt verwenden.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        missingok
}

10. Logrotate-Option compresscmd und compressext:Geben Sie den Komprimierungsbefehl für die Protokolldateirotation an

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}

Die folgenden Komprimierungsoptionen sind oben angegeben:

  • compress – Gibt an, dass eine Komprimierung erfolgen soll.
  • compresscmd – Geben Sie an, welche Art von Komprimierungsbefehl verwendet werden soll. Zum Beispiel:/bin/bzip2
  • compressext – Geben Sie die Erweiterung der rotierten Protokolldatei an. Ohne diese Option hätte die gedrehte Datei die Standarderweiterung .gz. Wenn Sie also bzip2 compressioncmd verwenden, geben Sie die Erweiterung als .bz2 an, wie im obigen Beispiel gezeigt.

Linux
  1. Rotieren und archivieren Sie Protokolle mit dem Linux-Befehl logrotate

  2. Sortierbefehl in Linux mit Beispielen

  3. Das Type Command Tutorial mit Beispielen für Anfänger

  4. Das Shuf-Befehls-Tutorial mit Beispielen für Anfänger

  5. Wesentliche Beispiele für den Dateibefehl in Linux

Das Top Command Tutorial mit Beispielen für Anfänger

Das mktemp-Befehls-Tutorial mit Beispielen für Anfänger

Das Grep-Befehls-Tutorial mit Beispielen für Anfänger

Das Uniq Command Tutorial mit Beispielen für Anfänger

Das fc Command Tutorial mit Beispielen für Anfänger

Das ultimative Tar Command Tutorial mit 10 praktischen Beispielen