logrotate – rotiert, komprimiert und versendet Systemprotokolle
SYNOPSIS
logrotate [--force] [--debug] [--state file] [--skip-state-lock] [--wait-for-state-lock] [--verbose] [--log file] [--mail command] config_file [config_file2 ...]
DESCRIPTION
logrotate wurde entwickelt, um die Verwaltung von Systemen zu vereinfachen, die große Mengen an Protokolldateien generieren.
Es ermöglicht die automatische Rotation, Komprimierung, Entfernung und das Versenden von Protokolldateien. Jede Protokolldatei kann täglich, wöchentlich, monatlich oder bei Erreichen einer bestimmten Größe verarbeitet werden.
Normalerweise wird logrotate als täglicher Cron-Job ausgeführt. Es wird eine Protokolldatei nicht öfter als einmal pro Tag geändert, es sei denn, das Kriterium für diese Protokolldatei basiert auf der Größe der Protokolldatei und logrotate wird häufiger als einmal täglich ausgeführt, oder es wird die Option -f oder --force verwendet.
Eine beliebige Anzahl von Konfigurationsdateien kann über die Befehlszeile angegeben werden. Spätere Konfigurationsdateien können die in früheren Dateien angegebenen Optionen überschreiben, daher ist die Reihenfolge, in der die logrotate-Konfigurationsdateien aufgeführt sind, wichtig. Normalerweise sollte eine einzelne Konfigurationsdatei verwendet werden, die alle anderen benötigten Konfigurationsdateien einbindet. Weitere Informationen zur Verwendung der Direktive "include" finden Sie unten. Wenn ein Verzeichnis über die Befehlszeile angegeben wird, wird jede Datei in diesem Verzeichnis als Konfigurationsdatei verwendet.
Wenn keine Befehlszeilenargumente angegeben werden, gibt logrotate die Versions- und Copyright-Informationen sowie eine kurze Zusammenfassung der Verwendung aus. Wenn während der Protokollrotation Fehler auftreten, beendet logrotate das Programm mit einem Nicht-Null-Status, die Statusdatei wird jedoch aktualisiert.
OPTIONEN
-f, --force
Weist logrotate an, die Rotation zu erzwingen, auch wenn dies nicht erforderlich ist. Dies ist manchmal nützlich, nachdem neue Einträge zu einer logrotate-Konfigurationsdatei hinzugefügt wurden, oder wenn alte Protokolldateien manuell entfernt wurden, da die neuen Dateien erstellt werden und die Protokollierung korrekt fortgesetzt wird.
-d, --debug
Aktiviert den Debug-Modus, was bedeutet, dass keine Änderungen an den Protokollen vorgenommen werden und die logrotate-Statusdatei nicht aktualisiert wird. Es werden nur Debug-Meldungen ausgegeben.
-s, --state statefile
Weist logrotate an, eine andere Statusdatei zu verwenden. Dies ist nützlich, wenn logrotate als anderer Benutzer für verschiedene Sätze von Protokolldateien ausgeführt wird. Um eine parallele Ausführung zu verhindern, sperrt logrotate standardmäßig die Statusdatei. Wenn die Sperre nicht erworben werden kann, beendet logrotate das Programm mit dem Wert 3. Die Standard-Statusdatei ist /var/lib/logrotate/status. Wenn /dev/null als Statusdatei angegeben wird, versucht logrotate nicht, die Statusdatei zu sperren oder zu schreiben.
--skip-state-lock
Sperrt die Zustandsdatei nicht, zum Beispiel, wenn die Sperrung nicht unterstützt oder verboten ist.
--wait-for-state-lock
Wartet, bis die Sperre auf der Zustandsdatei von einem anderen Logrotate-Prozess aufgehoben wird. Diese Option kann dazu führen, dass Logrotate unbegrenzt wartet. Mit Vorsicht verwenden.
-v, --verbose
Aktiviert den ausführlichen Modus, um beispielsweise während der Rotation Meldungen anzuzeigen.
-l, --log datei
Weist Logrotate an, die ausführliche Ausgabe in die Logdatei zu schreiben. Die ausführliche Ausgabe, die in diese Datei geschrieben wird, ist die gleiche wie beim Ausführen von Logrotate mit der Option -v. Die Logdatei wird bei jeder Ausführung von Logrotate überschrieben.
-m, --mail befehl
Weist Logrotate an, welchen Befehl zum Versenden von Protokollen verwendet werden soll. Dieser Befehl sollte die folgenden Argumente akzeptieren:
1. das Betreff der Nachricht, angegeben mit '-s betreff'
2. den Empfänger.
Der Befehl muss dann eine Nachricht von der Standardeingabe lesen und sie an den Empfänger senden. Der Standard-Mail-Befehl ist /usr/bin/mail.
--usage
Gibt eine kurze Nutzungsmeldung aus.
-?, --help
Gibt eine Hilfemeldung aus.
--version
Zeigt Versionsinformationen an.
KONFIGURATIONSDATEI
Logrotate liest alle Informationen über die Protokolldateien, die es verarbeiten soll, aus den in der Befehlszeile angegebenen Konfigurationsdateien. Jede Konfigurationsdatei kann globale Optionen festlegen (lokale Definitionen überschreiben globale, und spätere Definitionen überschreiben frühere). Globale Optionen wirken sich nicht auf vorherige Include-Direktiven aus. Eine einfache Konfigurationsdatei sieht wie folgt aus:
# Beispiel für eine Logrotate-Konfigurationsdatei
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail _
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
sharedscripts
postrotate
kill -HUP $(cat /var/run/inn.pid)
endscript
nocompress
}
~/log/*.log {}
Die ersten paar Zeilen legen globale Optionen fest; im Beispiel werden Protokolle nach der Rotation komprimiert. Beachten Sie, dass Kommentare überall in der Konfigurationsdatei erscheinen können, solange das erste Nicht-Leerzeichen in der Zeile ein # ist.
Werte werden durch Leerzeichen und/oder ein optionales = von den Direktiven getrennt. Zahlen müssen in einem Format angegeben werden, das von strtoul(3) verstanden wird.
Der nächste Abschnitt der Konfigurationsdatei definiert, wie die Protokolldatei /var/log/messages behandelt werden soll. Das Protokoll wird fünf Wochen lang rotiert, bevor es entfernt wird. Nachdem die Protokolldatei rotiert wurde (aber bevor die alte Version des Protokolls komprimiert wurde), wird der Befehl /usr/bin/killall -HUP syslogd ausgeführt.
Der nächste Abschnitt definiert die Parameter für sowohl /var/log/httpd/access.log als auch /var/log/httpd/error.log. Jedes wird rotiert, wenn es über 100 Kilobyte an Größe wächst, und die alten Protokolldateien werden (unkomprimiert) an _ gesendet, nachdem sie 5 Rotationen durchlaufen haben, anstatt entfernt zu werden. Die Option sharedscripts bedeutet, dass das Postrotate-Skript nur einmal für diesen Abschnitt ausgeführt wird, nicht einmal für jedes Protokoll, das rotiert wird. Beachten Sie, dass Dateinamen von Protokolldateien in Anführungszeichen gesetzt werden können (und dass Anführungszeichen erforderlich sind, wenn der Name Leerzeichen enthält). Die normalen Shell-Anführungsregeln gelten, wobei ', ", und \ Zeichen unterstützt werden.
Der nächste Abschnitt definiert die Parameter für alle Dateien in /var/log/news. Jede Datei wird monatlich rotiert.
Der letzte Abschnitt verwendet Tilde-Expansion, um Protokolldateien im Home-Verzeichnis des aktuellen Benutzers zu rotieren. Dies ist nur verfügbar, wenn Ihre Glob-Bibliothek die Tilde-Expansion unterstützt. GNU glob unterstützt dies.
Bitte verwenden Sie Wildcards mit Vorsicht. Wenn Sie * angeben, rotiert logrotate alle Dateien, einschließlich der zuvor rotierten. Eine Möglichkeit, dies zu umgehen, ist die Verwendung der Option olddir oder eines genaueren Wildcards (wie z. B. *.log).
Bitte beachten Sie, dass standardmäßig, wenn systemd(1) verwendet wird, die Option ProtectSystem=full in der Datei logrotate.service festgelegt ist. Dies verhindert, dass logrotate Protokolle in /etc und /usr ändert.
Hier sind weitere Informationen zu den Direktiven, die in einer logrotate-Konfigurationsdatei enthalten sein können:
KONFIGURATIONSFILE-DIREKTIVEN
Diese Direktiven können in einer logrotate-Konfigurationsdatei enthalten sein:
Rotation
rotate count
Protokolldateien werden count-mal rotiert, bevor sie entfernt oder an die in einer mail-Direktive angegebene Adresse gesendet werden. Wenn count 0 ist, werden alte Versionen entfernt, anstatt rotiert. Wenn count -1 ist, werden alte Protokolle nicht entfernt, außer dass sie von maxage betroffen sind (mit Vorsicht verwenden, kann Leistung und Speicherplatz verschwenden). Standard ist 0.
olddir directory
Protokolle werden für die Rotation in das Verzeichnis verschoben. Das Verzeichnis muss sich auf demselben physischen Laufwerk befinden wie die zu rotierende Protokolldatei, es sei denn, die Option copy, copytruncate oder renamecopy wird verwendet. Das Verzeichnis wird relativ zum Verzeichnis, das die Protokolldatei enthält, angenommen, es sei denn, ein absoluter Pfad wird angegeben. Wenn diese Option verwendet wird, landen alle alten Versionen des Protokolls im Verzeichnis. Diese Option kann durch die Option noolddir überschrieben werden.
noolddir
Protokolle werden in dem Verzeichnis rotiert, in dem sie sich normalerweise befinden (dies überschreibt die Option olddir).
su user group
Protokolldateien werden unter diesem Benutzer und dieser Gruppe rotiert, anstatt den Standardbenutzer/die Standardgruppe (normalerweise root) zu verwenden. user gibt den für die Rotation verwendeten Benutzer an und group gibt die für die Rotation verwendete Gruppe an (siehe den Abschnitt BENUTZER UND GRUPPE für Einzelheiten). Wenn der hier angegebene Benutzer/die hier angegebene Gruppe nicht über ausreichende Berechtigungen verfügt, um Dateien mit der in einer create-Direktive angegebenen Eigentümerschaft zu erstellen, führt dies zu einem Fehler. Wenn logrotate mit Root-Rechten ausgeführt wird, wird empfohlen, die Direktive su zu verwenden, um Dateien in Verzeichnissen zu rotieren, die sich direkt oder indirekt in der Kontrolle nicht privilegierter Benutzer befinden.
Häufigkeit
hourly Protokolldateien werden stündlich rotiert. Beachten Sie, dass logrotate normalerweise so konfiguriert ist, dass es täglich von cron ausgeführt wird (oder von `logrotate.timer`, wenn [systemd]({filename}../../systemd)(1) verwendet wird). Sie müssen diese Konfiguration ändern und logrotate stündlich ausführen, um die Protokolle tatsächlich stündlich zu rotieren.
täglich Die Logdateien werden jeden Tag rotiert.
wöchentlich [Wochentag]
Logdateien werden einmal an jedem Wochentag rotiert oder wenn das Datum um mindestens 7 Tage seit der letzten Rotation vorangetrieben wird (wobei die genaue Zeit ignoriert wird). Die Interpretation des Wochentags ist wie folgt: 0 bedeutet Sonntag, 1 bedeutet Montag, ..., 6 bedeutet Samstag; der spezielle Wert 7 bedeutet alle 7 Tage, unabhängig vom Wochentag. Wenn das Argument für den Wochentag weggelassen wird, wird standardmäßig 0 verwendet.
monatlich
Logdateien werden das erste Mal rotiert, wenn logrotate in einem Monat ausgeführt wird (normalerweise am ersten Tag des Monats).
jährlich Logdateien werden rotiert, wenn das aktuelle Jahr nicht mit dem letzten Rotationsjahr übereinstimmt.
größe größe
Logdateien werden nur rotiert, wenn sie größer als die angegebene Größe in Bytes werden. Wenn der Größe „k“ folgt, wird davon ausgegangen, dass die Größe in Kilobyte angegeben ist. Wenn „M“ verwendet wird, wird die Größe in Megabyte angegeben, und wenn „G“ verwendet wird, wird die Größe in Gigabyte angegeben. Somit sind Größe 100, Größe 100k, Größe 100M und Größe 100G alle gültig. Diese Option schließt die Zeitintervalloptionen aus und führt dazu, dass Logdateien ohne Berücksichtigung der letzten Rotationszeit rotiert werden, wenn sie nach den Zeitkriterien angegeben werden (die zuletzt angegebene Option hat Vorrang).
Dateiauswahl
missingok
Wenn die Logdatei fehlt, wird mit der nächsten Datei fortgefahren, ohne eine Fehlermeldung auszugeben. Siehe auch nomissingok.
nomissingok
Wenn eine Logdatei nicht vorhanden ist, wird eine Fehlermeldung ausgegeben. Dies ist die Standardeinstellung.
ignoreduplicates
Alle nachfolgenden Übereinstimmungen für eine Logdatei werden ignoriert.
ifempty
Die Logdatei wird auch dann rotiert, wenn sie leer ist, wodurch die Option notifempty überschrieben wird (ifempty ist die Standardeinstellung).
notifempty
Die Logdatei wird nicht rotiert, wenn sie leer ist (dadurch wird die Option ifempty überschrieben).
minage anzahl
Logdateien, die jünger als <anzahl> Tage sind, werden nicht rotiert.
maxage anzahl
Rotierte Logdateien, die älter als <anzahl> Tage sind, werden entfernt. Das Alter wird nur dann überprüft, wenn die Logdatei rotiert werden soll. rotate -1 verhindert die Entfernung nicht. Die Dateien werden an die konfigurierte Adresse gesendet, wenn maillast und mail konfiguriert sind.
minsize größe
Logdateien werden rotiert, wenn sie größer als die angegebene Größe in Bytes werden, aber nicht, bevor das zusätzlich angegebene Zeitintervall (täglich, wöchentlich, monatlich oder jährlich) verstrichen ist. Die zugehörige Größenoption ist ähnlich, mit dem Unterschied, dass sie die Zeitintervalloptionen ausschließt und dazu führt, dass Logdateien ohne Berücksichtigung der letzten Rotationszeit rotiert werden, wenn sie nach den Zeitkriterien angegeben werden (die zuletzt angegebene Option hat Vorrang). Wenn minsize verwendet wird, werden sowohl die Größe als auch der Zeitstempel einer Logdatei berücksichtigt.
maxsize größe
Logdateien werden rotiert, wenn sie größer als die angegebene Größe in Bytes werden, selbst bevor das zusätzlich angegebene Zeitintervall (täglich, wöchentlich, monatlich oder jährlich) verstrichen ist. Die zugehörige Größenoption ist ähnlich, mit dem Unterschied, dass sie die Zeitintervalloptionen ausschließt und dazu führt, dass Logdateien ohne Berücksichtigung der letzten Rotationszeit rotiert werden, wenn sie nach den Zeitkriterien angegeben werden (die zuletzt angegebene Option hat Vorrang). Wenn maxsize verwendet wird, werden sowohl die Größe als auch der Zeitstempel einer Logdatei berücksichtigt.
tabooext [+] liste
Die aktuelle Liste der Tabu-Erweiterungen wurde geändert (siehe die Direktive „include“ für Informationen über die Tabu-Erweiterungen). Wenn ein + vor der Liste der Erweiterungen steht, wird die aktuelle Liste der Tabu-Erweiterungen erweitert, andernfalls wird sie ersetzt. Beim Start ist die Liste der Tabu-Erweiterungen ,v, .bak, .cfsaved, .disabled, .dpkg-bak, .dpkg-del, .dpkg-dist, .dpkg-new, .dpkg-old, .dpkg-tmp, .new, .old, .orig, .rhn-cfg-tmp-*, .rpmnew, .rpmorig, .rpmsave, .swp, .ucf-dist, .ucf-new, .ucf-old, ~
taboopat [+] liste
Die aktuelle Liste der Tabu-Glob-Muster wurde geändert (siehe die Direktive „include“ für Informationen über die Tabu-Erweiterungen und -Muster). Wenn ein + vor der Liste der Muster steht, wird die aktuelle Liste der Tabu-Muster erweitert, andernfalls wird sie ersetzt. Beim Start ist die Liste der Tabu-Muster leer.
Dateien und Ordner
create mode owner group, create owner group
Unmittelbar nach der Rotation (bevor das Postrotate-Skript ausgeführt wird) wird die Protokolldatei erstellt (mit dem gleichen Namen wie die gerade rotierte Protokolldatei). mode gibt den Modus für die Protokolldatei in Oktalzahlen an (wie bei chmod(2)), owner gibt den Benutzer an, der die Protokolldatei besitzen soll, und group gibt die Gruppe an, der die Protokolldatei angehören soll (siehe den Abschnitt BENUTZER UND GRUPPE für weitere Informationen). Alle Attribute der Protokolldatei können weggelassen werden, in diesem Fall verwenden die neuen Attribute für die neue Datei die gleichen Werte wie die ursprüngliche Protokolldatei für die weggelassenen Attribute. Diese Option kann mit der Option nocreate deaktiviert werden.
nocreate
Es werden keine neuen Protokolldateien erstellt (dies überschreibt die Option create).
createolddir mode [owner [group]], createolddir [owner [group]]
Wenn das durch die Direktive olddir angegebene Verzeichnis nicht existiert, wird es erstellt. mode gibt den Modus für das olddir-Verzeichnis in Oktalzahlen an (wie bei chmod(2)), owner gibt den Benutzer an, der das olddir-Verzeichnis besitzen soll, und group gibt die Gruppe an, der das olddir-Verzeichnis angehören soll (siehe den Abschnitt BENUTZER UND GRUPPE für weitere Informationen). Wenn mode nicht angegeben ist, wird 0755 angenommen. Diese Option kann mit der Option nocreateolddir deaktiviert werden.
nocreateolddir
Das Verzeichnis olddir wird von logrotate nicht erstellt, wenn es nicht existiert.
copy Erstellt eine Kopie der Protokolldatei, ändert aber nicht das Original. Diese Option kann
z. B. verwendet werden, um eine Momentaufnahme der aktuellen Protokolldatei zu erstellen, oder wenn ein anderes Dienstprogramm die Datei abschneiden oder analysieren muss. Wenn diese Option verwendet wird, hat die Option create keine Auswirkung, da die alte Protokolldatei an ihrem ursprünglichen Speicherort verbleibt. Mit der Option copy können rotierte Protokolldateien mit der Direktive olddir auf verschiedenen Geräten gespeichert werden.
nocopy Erstellt keine Kopie der ursprünglichen Protokolldatei und belässt diese an ihrem ursprünglichen Speicherort (dies überschreibt die Option copy).
copytruncate
Schneidet die ursprüngliche Protokolldatei nach dem Erstellen einer Kopie an Ort und Stelle auf die Größe Null ab, anstatt die alte Protokolldatei zu verschieben und optional eine neue zu erstellen. Dies kann verwendet werden, wenn ein Programm nicht angewiesen werden kann, seine Protokolldatei zu schließen, und daher möglicherweise weiterhin (anhängend) in die vorherige Protokolldatei schreibt. Beachten Sie, dass es einen sehr kleinen Zeitraum zwischen dem Kopieren der Datei und dem Abschneiden gibt, sodass einige Protokolldaten möglicherweise verloren gehen. Wenn diese Option verwendet wird, hat die Option `create` keine Auswirkung, da die alte Protokolldatei am selben Ort verbleibt. Die Option `copytruncate` ermöglicht das Speichern rotierter Protokolldateien auf verschiedenen Geräten mithilfe der Direktive `olddir`. Die Option `copytruncate` impliziert `norenamecopy`.
nocopytruncate
Schneidet die ursprüngliche Protokolldatei nach dem Erstellen einer Kopie nicht an Ort und Stelle ab (dies überschreibt die Option `copytruncate`).
renamecopy
Die Protokolldatei wird in demselben Verzeichnis in eine temporäre Datei umbenannt, indem die Erweiterung ".tmp" hinzugefügt wird. Danach wird das Skript `postrotate` ausgeführt und die Protokolldatei von der temporären Datei in die endgültige Datei kopiert. Am Ende wird die temporäre Datei entfernt. Die Option `renamecopy` ermöglicht das Speichern rotierter Protokolldateien auf verschiedenen Geräten mithilfe der Direktive `olddir`. Die Option `renamecopy` impliziert `nocopytruncate`.
norenamecopy
Benennt und kopiert die ursprüngliche Protokolldatei nicht um (dies überschreibt die Option `renamecopy`).
shred Löscht Protokolldateien mit `shred -u` anstelle von `unlink()`. Dies sollte sicherstellen, dass die Protokolle nach ihrer geplanten Löschung nicht mehr lesbar sind; dies ist standardmäßig deaktiviert. Siehe auch `noshred`.
noshred
Verwendet `shred` nicht zum Löschen alter Protokolldateien. Siehe auch `shred`.
shredcycles count
Fordert [shred]({filename}../../shred)(1) auf, die Protokolldateien vor dem Löschen `count` Mal zu überschreiben. Ohne diese Option wird der Standardwert von `shred` verwendet.
allowhardlink
Rotiert Dateien mit mehreren Hardlinks; dies ist standardmäßig deaktiviert. Die Zieldatei kann geleert werden, z. B. mit `shred` oder `copytruncate`. Verwenden Sie dies mit Vorsicht, insbesondere wenn die Protokolldateien als Root-Benutzer rotiert werden.
noallowhardlink
Rotiert Dateien mit mehreren Hardlinks nicht. Siehe auch `allowhardlink`.
Komprimierung
compress
Alte Versionen von Protokolldateien werden standardmäßig mit [gzip]({filename}../../gzip)(1) komprimiert. Siehe auch `nocompress`.
nocompress
Alte Versionen von Protokolldateien werden nicht komprimiert. Siehe auch `compress`.
compresscmd
Gibt an, welchen Befehl zur Komprimierung von Protokolldateien verwendet werden soll. Der Standard ist [gzip]({filename}../../gzip)(1). Siehe auch `compress`.
uncompresscmd
Gibt an, welchen Befehl zum Dekomprimieren von Protokolldateien verwendet werden soll. Der Standard ist `gunzip(1)`.
compressext
Gibt an, welche Erweiterung für komprimierte Protokolldateien verwendet werden soll, falls die Komprimierung aktiviert ist. Der Standardwert entspricht dem der konfigurierten Komprimierungsbefehl.
compressoptions
Befehlszeilenoptionen können an das Komprimierungsprogramm übergeben werden, falls eines verwendet wird. Der Standardwert für [gzip]({filename}../../gzip)(1) ist "-6" (bevorzugt hohe Komprimierung auf Kosten der Geschwindigkeit). Wenn Sie einen anderen Komprimierungsbefehl verwenden, müssen Sie möglicherweise die `compressoptions` entsprechend ändern.
delaycompress
Verschiebt die Komprimierung der vorherigen Protokolldatei auf den nächsten Rotationszyklus. Dies hat nur dann eine Wirkung, wenn es in Kombination mit compress verwendet wird. Es kann verwendet werden, wenn ein bestimmtes Programm nicht angewiesen werden kann, seine Protokolldatei zu schließen, und somit möglicherweise für eine gewisse Zeit weiter in die vorherige Protokolldatei schreibt.
nodelaycompress
Verhindert die Verschiebung der Komprimierung der vorherigen Protokolldatei auf den nächsten Rotationszyklus (dies überschreibt die Option delaycompress).
Dateinamen
extension ext
Protokolldateien mit der Erweiterung ext können diese nach der Rotation behalten. Wenn die Komprimierung verwendet wird, erscheint die Komprimierungserweiterung (normalerweise .gz) nach ext. Zum Beispiel, wenn Sie eine Protokolldatei mit dem Namen mylog.foo haben und diese in mylog.1.foo.gz anstelle von mylog.foo.1.gz rotieren möchten.
addextension ext
Protokolldateien erhalten nach der Rotation die endgültige Erweiterung ext. Wenn die ursprüngliche Datei bereits mit ext endet, wird die Erweiterung nicht dupliziert, sondern lediglich ans Ende verschoben, d. h. sowohl filename als auch filenameext würden zu filename.1ext rotiert werden. Wenn die Komprimierung verwendet wird, erscheint die Komprimierungserweiterung (normalerweise .gz) nach ext.
start count
Dies ist die Zahl, die als Basis für die Rotation verwendet werden soll. Wenn Sie beispielsweise 0 angeben, werden die Protokolldateien mit einer Erweiterung .0 erstellt, wenn sie von den ursprünglichen Protokolldateien rotiert werden. Wenn Sie 9 angeben, werden die Protokolldateien mit einer Erweiterung .9 erstellt, wobei 0–8 übersprungen werden. Die Dateien werden dennoch so oft rotiert, wie in der Direktive rotate angegeben.
dateext
Archiviert alte Versionen von Protokolldateien, indem eine Datums-Erweiterung wie YYYYMMDD anstelle einer einfachen Zahl hinzugefügt wird. Die Erweiterung kann mithilfe der Optionen dateformat und dateyesterday konfiguriert werden.
nodateext
Verhindert die Archivierung alter Versionen von Protokolldateien mit einer Datums-Erweiterung (dies überschreibt die Option dateext).
dateformat format_string
Gibt das Format für dateext mithilfe einer Notation ähnlich der Funktion strftime(3) an. Es sind nur die Spezifizierer %Y, %m, %d, %H, %M, %S, %V, %s und %z zulässig. Der Standardwert ist - %Y%m%d, außer für die stündliche Rotation, bei der - %Y%m%d%H als Standardwert verwendet wird. Beachten Sie, dass auch das Zeichen, das den Protokolldateinamen von der Erweiterung trennt, Teil der Zeichenkette dateformat ist. Die Systemuhr muss nach dem 9. September 2001 eingestellt sein, damit %s korrekt funktioniert. Beachten Sie, dass die durch dieses Format generierten Datumsstempel lexikalisch sortierbar sein müssen (d. h. zuerst das Jahr, dann der Monat und dann der Tag. Zum Beispiel ist 2001/12/01 in Ordnung, aber 01/12/2001 nicht, da 01/11/2002 kleiner sortiert würde, obwohl es später ist). Dies liegt daran, dass logrotate beim Verwenden der Option rotate alle rotierten Dateinamen sortiert, um herauszufinden, welche Protokolldateien älter sind und gelöscht werden sollten.
dateyesterday
Verwendet anstelle des heutigen Datums das gestrige Datum, um die dateext-Erweiterung zu erstellen, so dass die rotierte Protokolldatei ein Datum in ihrem Namen enthält, das dem der darin enthaltenen Zeitstempel entspricht.
datehourago
Verwenden Sie stattdessen die aktuelle Stunde, um die Dateierweiterung dateext zu erstellen, sodass die rotierte Protokolldatei eine Stunde in ihrem Namen enthält, die mit den Zeitstempeln darin übereinstimmt. Nützlich bei stündlicher Rotation.
mail address
Wenn eine Protokolldatei aus dem System entfernt wird, wird sie an die angegebene Adresse per E-Mail gesendet. Wenn für eine bestimmte Protokolldatei keine E-Mail generiert werden soll, kann die Direktive nomail verwendet werden.
nomail Senden Sie keine alten Protokolldateien per E-Mail.
mailfirst
Wenn der Befehl mail verwendet wird, senden Sie die gerade rotierte Datei per E-Mail, anstatt der Datei, die bald ungültig wird.
maillast
Wenn der Befehl mail verwendet wird, senden Sie die bald ungültige Datei per E-Mail, anstatt der gerade rotierten Datei (dies ist die Standardeinstellung).
Zusätzliche Konfigurationsdateien
include file_or_directory
Liest die als Argument angegebene Datei, als ob sie inline an der Stelle eingefügt würde, an der die Direktive include angezeigt wird. Wenn ein Verzeichnis angegeben wird, werden die meisten Dateien in diesem Verzeichnis in alphabetischer Reihenfolge gelesen, bevor die Verarbeitung der einschließenden Datei fortgesetzt wird. Die einzigen Dateien, die ignoriert werden, sind Dateien, die keine regulären Dateien sind (z. B. Verzeichnisse und benannte Pipes) und Dateien, deren Namen mit einer der in den Direktiven tabooext oder taboopat angegebenen Tabu-Erweiterungen oder -Muster enden. Der angegebene Pfad kann mit ~/ beginnen, um ihn relativ zum Home-Verzeichnis des ausführenden Benutzers zu machen. Aus Sicherheitsgründen dürfen Konfigurationsdateien nicht gruppenbeschreibbar oder weltbeschreibbar sein.
Skripte
sharedscripts
Normalerweise werden die Skripte prerotate und postrotate für jede Protokolldatei ausgeführt, die rotiert wird, und der absolute Pfad zur Protokolldatei wird als erstes Argument an das Skript übergeben. Das bedeutet, dass ein einzelnes Skript mehrmals für Protokolldateieinträge ausgeführt werden kann, die mit mehreren Dateien übereinstimmen (z. B. mit dem Beispiel /var/log/news/*). Wenn sharedscripts angegeben wird, werden die Skripte nur einmal ausgeführt, egal wie viele Protokolle mit dem Platzhaltermuster übereinstimmen, und das gesamte Muster wird an sie übergeben. Wenn jedoch keine der Protokolldateien im Muster rotiert werden muss, werden die Skripte überhaupt nicht ausgeführt. Wenn die Skripte mit einem Fehler beendet werden (oder wenn eine Protokolldatei die Rotation nicht durchführt), werden die verbleibenden Aktionen für keine der Protokolldateien ausgeführt. Diese Option überschreibt die Option nosharedscripts.
nosharedscripts
Führen Sie die Skripte prerotate und postrotate für jede Protokolldatei aus, die rotiert wird (dies ist die Standardeinstellung und überschreibt die Option sharedscripts). Der absolute Pfad zur Protokolldatei wird als erstes Argument an das Skript übergeben. Der absolute Pfad zur endgültigen rotierten Protokolldatei wird als zweites Argument an das Skript postrotate übergeben. Wenn die Skripte mit einem Fehler beendet werden, werden die verbleibenden Aktionen nur für die betroffene Protokolldatei nicht ausgeführt.
firstaction
script
endscript
Das Skript wird einmal ausgeführt, bevor alle Protokolldateien, die mit dem Platzhaltermuster übereinstimmen, rotiert werden, bevor das Skript prerotate ausgeführt wird und nur, wenn tatsächlich mindestens eine Protokolldatei rotiert wird. Diese Direktiven dürfen nur innerhalb einer Protokolldateidefinition vorkommen. Das gesamte Muster wird als erstes Argument an das Skript übergeben. Wenn das Skript mit einem Fehler beendet wird, wird keine weitere Verarbeitung durchgeführt. Siehe auch lastaction und den Abschnitt SKRIPTE.
lastaction
script
endscript
Das Skript wird einmal ausgeführt, nachdem alle Logdateien, die dem Wildcard-Muster entsprechen, rotiert wurden, nachdem das Postrotate-Skript ausgeführt wurde und nur, wenn mindestens eine Logdatei rotiert wurde. Diese Direktiven dürfen nur innerhalb einer Logdateidefinition vorkommen. Das gesamte Muster wird als erstes Argument an das Skript übergeben. Wenn das Skript mit einem Fehler beendet wird, wird nur eine Fehlermeldung angezeigt (da dies die letzte Aktion ist). Siehe auch firstaction und der Abschnitt SCRIPTS.
prerotate
script
endscript
Das Skript wird vor der Rotation der Logdatei und ihrer alten Logdateien ausgeführt und nur, wenn die Logdatei tatsächlich rotiert wird. Diese Direktiven dürfen nur innerhalb einer Logdateidefinition vorkommen. Normalerweise wird der absolute Pfad zur Logdatei als erstes Argument an das Skript übergeben. Wenn sharedscripts angegeben ist, wird das gesamte Muster an das Skript übergeben. Siehe auch postrotate und der Abschnitt SCRIPTS. Siehe sharedscripts und nosharedscripts für die Fehlerbehandlung.
postrotate
script
endscript
Das Skript wird nach der Rotation der Logdatei und vor der Komprimierung der Logdatei ausgeführt. Diese Direktiven dürfen nur innerhalb einer Logdateidefinition vorkommen. Normalerweise wird der absolute Pfad zur Logdatei als erstes Argument an das Skript und der absolute Pfad zur endgültigen rotierten Logdatei als zweites Argument an das Skript übergeben. Wenn sharedscripts angegeben ist, wird das gesamte Muster als erstes Argument an das Skript übergeben, und das zweite Argument wird weggelassen. Siehe auch prerotate und der Abschnitt SCRIPTS. Siehe sharedscripts und nosharedscripts für die Fehlerbehandlung.
preremove
script
endscript
Das Skript wird einmal ausgeführt, kurz bevor eine Logdatei entfernt wird. Logrotate übergibt den Namen der Datei, die bald entfernt wird, als erstes Argument an das Skript. Siehe auch firstaction und der Abschnitt SCRIPTS.
SCRIPTS
Die Zeilen zwischen dem Start-Schlüsselwort (z. B. prerotate) und endscript (die beide in eigenen Zeilen stehen müssen) werden ausgeführt (mithilfe von /bin/sh). Das Skript erbt einige Eigenschaften vom Logrotate-Prozess, einschließlich stderr, stdout, dem aktuellen Verzeichnis, der Umgebung und der umask. Skripte werden als der aufrufende Benutzer und die aufrufende Gruppe ausgeführt, unabhängig von einer su-Direktive. Wenn die Option --log angegeben wurde, ist Dateideskriptor 3 die Logdatei. Das aktuelle Arbeitsverzeichnis ist nicht angegeben.
BENUTZER UND GRUPPE
Benutzer- und Gruppenbezeichner werden zuerst durch Versuch der textuellen Darstellung und, falls dies fehlschlägt, anschließend durch den numerischen Wert aufgelöst.
DATEIEN
/var/lib/logrotate/status Standard-Statusdatei.
/etc/logrotate.conf Konfigurationsoptionen.
SIEHE AUCH
chmod(2), gunzip(1), gzip(1), mail(1), shred(1), strftime(3), strtoul(3), [https://github.com/logrotate/logrotate]
AUTOREN
Erik Troan, Preston Brown, Jan Kaluza.
[https://github.com/logrotate/logrotate]