Zum Archivieren und Löschen von Protokollen verwende ich folgendes Setup:
/path/to/logs/*.log {
daily
missingok
compress
rotate 4
nodateext
nocreate
maxage 14
}
An meinem Protokollspeicherort befinden sich Protokolle, die folgendermaßen aussehen:
-rwxrwxrwx 1 nobody nobody 21635 Sep 26 13:09 audit-2016.09.26.log
Diese werden dann gedreht und komprimiert, sodass sie wie folgt aussehen:
-rwxrwxrwx 1 nobody nobody 180485 Sep 10 03:41 audit-2016.09.26.log.1.gz
Mein Problem besteht darin, dass die Protokolle nach der nächtlichen Archivierung nicht nach 14 Tagen gelöscht werden (wie es die Maxage-Direktive tun sollte).
Hat jemand eine Idee, warum das passiert oder was ich in meiner Logrotate-Konfiguration ändern sollte?
Danke!
Antwort1
Aus der Manpage von logrotate:
Maximale Anzahl
Entfernen Sie rotierte Protokolle, die älter als Tage sind.Eine Überprüfung des Alters erfolgt nur, wenn das Logfile rotiert werden soll.
audit-2016.09.26.log
wurde nur einmal erstellt und nie wieder. Es wird also nie wieder rotiert.
Tatsächlich Ihre Audit-Logdateiensind bereits gedreht. Sieht so aus, als ob Sie sie nur komprimieren und alte Dateien entfernen möchten. Ich weiß nicht, ob das mit logrotate möglich ist. Sie können Ihrer ursprünglichen Regel ein Postrotate-Skript hinzufügen, etwa:
postrotate
find /path/to/logs -name "*.log.1.gz" -mtime +14 -delete
endscript