logrotate nach Größe - muss ich den Cron wechseln?

10

Meine aktuelle Logrotate-Konfiguration sieht folgendermaßen aus (mit Logrotate 3.8.7)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

Es wird einmal am Tag erfolgreich ausgeführt, aber wenn die Größe 250 Millionen überschreitet, wird es nicht gedreht. Es wartet also bis zum Ende des Tages, um sich zu drehen, unabhängig von der Größe.

Ich habe gelesen , dass es die maxsize Option ist, und nach dem Wechsel size 250Mzu maxsize 250Mimmer noch nicht funktioniert.

Muss ich einen Cron einstellen, um logrotate stündlich auszuführen, oder wird logrotate automatisch ausgeführt, weil diese Dateigröße abgehört wird und etwas anderes nicht stimmt?

Hommer Smith
quelle

Antworten:

7

Ja, Sie müssen logrotatemehr als einmal am Tag laufen , um dies zu erreichen. Dies wird im zweiten Absatz der Manpage logrotate(8) beantwortet :

Normalerweise logrotatewird es als täglicher Cron-Job ausgeführt. Ein Protokoll wird an einem Tag nicht mehrmals geändert, es sei denn, das Kriterium für dieses Protokoll basiert auf der Größe des Protokolls und logrotatewird mehrmals täglich ausgeführt, oder es wird die Option -foder --forceverwendet.

Wenn Sie logrotatestündlich statt täglich laufen möchten , können Sie es verschieben:

mv /etc/cron.daily/logrotate /etc/cron.hourly

Seit 3.8.1 gibt es maxsize. Der Unterschied zwischen sizeund maxsizewird hier beschrieben:

maxsize Größe

Log - Dateien sind gedreht , wenn sie größer wird als Größe Bytes noch vor dem zusätzlich bestimmten Zeitintervall ( daily, weekly, monthly, oder yearly). Die zugehörige sizeOption ist ähnlich, mit der Ausnahme, dass sie sich mit den Zeitintervalloptionen gegenseitig ausschließt und Protokolldateien ohne Berücksichtigung der letzten Rotationszeit gedreht werden. Bei maxsizeVerwendung werden sowohl die Größe als auch der Zeitstempel einer Protokolldatei berücksichtigt.

Dies würde beides für Ihre Verwendung geeignet machen: sizeohne Intervall und maxsizewenn auch Intervall benötigt wird. Dies ändert jedoch nichts an der Tatsache, dass standardmäßig logrotatenur täglich ausgeführt wird. Dieses Intervall ist für die meisten geeignet, da es in den meisten Fällen viel länger als einen Tag dauert, bis ein Protokoll wächst 250M.

Esa Jokinen
quelle
1
Zu Ihrer Information gibt es eine Maxsize-Direktive ab 8.1: hpux.connect.org.uk/hpux/Sysadmin/logrotate-3.8.7/…
Hommer Smith
Vielen Dank, dass Sie bemerkt haben, dass ich eine alte Version des Handbuchs gelesen habe, @HommerSmith! Ich habe meine Antwort entsprechend korrigiert.
Esa Jokinen