Wie verhindert man, dass die Log-Files die komplette Festplatte zumüllen?

Zu diesem Zweck gibt es Logrotate. Logrotate rotiert, komprimiert und verschickt Logfiles per Mail.

Dateien

/etc/logrotate.conf	Allgemeine Anweisungen, die global gelten. Hier werden alle Dateine aus dem Verzeichnis /etc/logrotate.d/ included
/etc/logratate.d/	Logfilespezifische Anweisungen

Konfiguration

Konfiguriert wird dieser Dienst mit allen Dateien, die in /etc/logrotate.d/ stehen. Der Syntax dieser Dateien ist grundsätzlich folgender:

"Logdatei" {
<Anweisungen>
}

Dabei gilt, dass die Anweisungen von oben nach unten ausgeführt werden.

Die Anweisungen können wie folgt sein:

Anweisung	Beschreibung
compress	Rotierte Logfiles werden gepackt.
compresscmd	Bestimmt das Betriebssystemkommando, mit dem die rotierten Logfiles gepackt werden sollen. Als Standard wird gzip verwendet.
uncompresscmd	Bestimmt das Betriebssystemkommando, mit dem die rotierten Logfiles wieder ausgepackt werden sollen. Als Standard wird gunzip verwendet.
compressext	Definiert die Dateinamenserweiterung der komprimierten Dateien. Als Standard wird die Dateinamenserweiterung des verwendeten Komprimierungsprogrammes verwendet.
compressoption	Optionale Parameter für das Komprimierungsprogramm.
copytruncate	Diese Option schneidet das originale Logfile ab, nach dem es kopiert wurde. Normalerweise wird das alte Logfile umbenannt und ein neues erstellt. Da es aber Applikationen gibt, die nicht dazu gezwungen werden können, ihr Logfile zu schließen, wurde diese alternative Möglichkeit geschaffen. Es kann bei diesem Vorgehen passieren, das einige Daten verloren gehen könnten. Außerdem hat die create - Direktive keine Wirkung mehr.
create {Modus} {Benutzer} {Gruppe}	Direkt nach dem rotieren der Log-Datei werden die Dateiattribute entsprechend den Vorgaben gesetzt.
daily	Die Logfiles werden täglich gesichert.
dateext	Archivierte Version erhalten einen Datumsstempel anstatt einer laufenden Nummer.
delaycompress	Mit dieser Option wird die zuletzt rotierte version nicht sofort komprimiert, sondern immer erst im nächsten Rotationszyklus.
extension {ext}	Die rotierten Logfiles erhalten die entsprechende Dateinamenserweiterung. An diese Erweiterung wird aber noch ggf. die Erweiterung des Komprimierungsprogrammes angehängt.
ifempty	Rotiert das Logfile auch dann, wenn es leer ist. (Standardeinstellung)
include {datei_oder_verzeichnis}	Bindet die angegebene Konfigurationsdatei ein. Handelt es sich dabei um ein Verzeichnis, so werden alle in diesem Verzeichnis vorhandenen Dateien eingelesen.
mail {Adresse}	Soll ein Logfile gelöscht werden, weil es die älteste Version ist (siehe bei rotate), so wird diese Datei zur angegebenen e-Mail Adresse versendet.
mailfirst	Dieser Parameter macht nur in Verbindung mit dem Parameter mail Sinn. An Stelle der zu löschenden Datei, wird die gerade erstellte Datei verschickt.
maillast	Dieser Parameter macht nur in Verbindung mit dem Parameter mail Sinn. An Stelle der gerade erstellte Datei wird die zu löschende Datei verschickt. (Standardeinstellung)
maxage {Anzahl}	Löscht rotierte Logdateien nach der entsprechenden Anzahl von Tagen.
missingok	Wenn das Logfile nicht vorhanden ist, dann wird keine Fehlermeldung erzeugt und mit der Verarbeitung fortgefahren.
monthly	Monatliches rotieren der Logdateien.
nocompress	Die rotierten Logdateien werden nicht komprimiert.
nocopytruncate	Das entsprechende Logfile wird nach dem Kopieren nicht abgeschnitten. Die Option copytruncate wird damit überschrieben!
nocreate	Neue Logdateien werden nach dem Verschieben nicht wieder erstellt. Die Option create wird damit überschrieben!
nodelaycompress	Rotierte Logdateien werden sofort komprimiert. Die Option delaycompress wird damit überschrieben!
nomail	Es werden keine Logfiles als e-Mail versandt.
nomissingok	Wenn das Logfile nicht vorhanden ist, dann wird eine Fehlermeldung erzeugt. (Standardeinstellung)
noolddir	Die rotierten Logdateien werden normalerweise in dem gleichen Verzeichnis abgelegt.
nosharedscripts	Startet Scripte unter den Optionen prerotate und postrotate für jede angegebene Logdatei. (Dieses ist die Standardeinstellung und überschreibt die Option sharedscript.
notifempty	Ein leeres Logfile wird nicht rotiert. Die Option ifempty wird damit überschrieben!
olddir {Verzeichnis}	Alle rotierten Dateien werden in dem angegebenen Verzeichnis abgelegt. Es muß sich aber auf der gleichen Festplatte befinden.
postrotate / endscript	Die Betriebssystemkommandos zwischen postrotate und endscript werden nach dem Rotieren des Logfiles ausgeführt. Die beiden Parameter müssen in einer eigenen Zeile stehen.
prerotate / endscript	Die Betriebssystemkommandos zwischen prerotate und endscript werden vor dem Rotieren des Logfiles ausgeführt. Die beiden Parameter müssen in einer eigenen Zeile stehen.
rotate {Anzahl}	Diese Option bestimmt die Anzahl der verfügbar gehaltenen rotierten Dateien.
size {Größe}	Logfiles werden rotiert, wenn sie die angebene Größe in Bytes überschreiten. (100000 bedeutet 100000 Bytes, 100k bedeutet 100 KiloBytes und 10M bedeutet 10 MegaBytes)
sharedscript	Normalerweiser werden die unter prerotate und postrotate definierten Prozeduren für jede einzelne Logdatei ausgeführt. Mit dieser Option werden diese Prozeduren aber nur einmal ausgeführt.
weekly	Wöchentliches rotieren der Logdateien.

Beispiele

/var/log/vsftpd.log {
weekly
rotate 4
compress
notifempty
missingok

Die Datei „/var/log/vsftpd.log“ soll behandelt werden