Wie kann ich logrotate so einrichten, dass Protokolle stündlich gedreht werden?

23

Nach dem dem Unix und Linux Administration Handbuch und man, logrotate hat Optionen für daily, weeklyund monthly, aber gibt es eine Möglichkeit , eine hinzuzufügen hourlyOption?

Dieser Blog - Eintrag erwähnt Sie festlegen können , size 1die Zeit Option und entfernen (zB: daily) und dann manuell aufrufen logrotatemit cron- ich nehme an so etwas wie

logrotate -f /etc/logrotate.d/my-hourly-file

Aber gibt es eine elegantere Lösung für das stündliche Drehen von Protokollen?

cwd
quelle
Sicher. Was ist Ihr Betriebssystem, welche Version?
Nils
Ubuntu 10.04 und 11
CWD

Antworten:

20

Abhängig von Ihrem Betriebssystem. Einige (alle?) Linux-Distributionen haben ein Verzeichnis, /etc/cron.hourlyin dem Sie stündlich auszuführende Cron-Jobs ablegen können.

Andere haben ein Verzeichnis /etc/cron.d/. Dort können Sie Cron-Jobs, die als Spezialbenutzer ausgeführt werden sollen, mit den üblichen Cron-Einstellungen eines Crontab-Eintrags ablegen (und Sie müssen den Benutzernamen angeben).

Wenn Sie eines dieser Skripts anstelle des Standard-Protokollrotationsskripts verwenden /etc/cron.daily/, sollten Sie dieses Skript dort und cp /dev/nullan die ursprüngliche Position kopieren . Andernfalls wird es durch ein logrotates Patch-Update reaktiviert.

Achten Sie für eine ordnungsgemäße stündliche Rotation auch darauf, dass die dateextRichtlinie nicht festgelegt ist. In diesem Fall erhält die erste gedrehte Datei standardmäßig die Erweiterung des aktuellen Datums wie JJJJMMTT. Wenn dann das zweite Mal am selben Tag eine Logrotation aktiv wird, wird die Rotation einfach übersprungen, selbst wenn der sizeSchwellenwert überschritten wurde.

Der Grund dafür ist, dass der neue Name der zu drehenden Datei bereits vorhanden ist und logrotate den Inhalt nicht an die vorhandene alte Datei anfügt. Bei RHEL und CentOS ist die dateextDirektive beispielsweise standardmäßig in angegeben/etc/logrotate.conf . Nach dem Entfernen oder Kommentieren dieser Zeile erhalten die gedrehten Dateien einfach eine laufende Nummer als Erweiterung, bis der rotateWert erreicht ist. Auf diese Weise ist es möglich, mehrere Rotationen pro Tag durchzuführen.

Nils
quelle
5

Nur um Nils Antwort hinzuzufügen, wenn Sie den Ort des logrotateSkripts auf einer Debian- oder Ubuntu-Box ändern , ist es wahrscheinlich sicherer, es zu verwenden, dpkg-divertanstatt nur die Datei zu kopieren und /dev/nullan die ursprüngliche Position zu kopieren , zB:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
Boltronik
quelle
Ich wusste nichts davon und benutze Ubuntu seit Jahren. Vielen Dank. :)
Vaughany
2

Eine andere Option wäre das Hinzufügen des Befehls logrotate zur crontab-Liste. Dann wird es für jede Stunde ausgeführt.

crontab -e

Füge folgende Zeile in die Crontab-Liste ein

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
Wasantha Herath
quelle