[LINUX] Die Gefahr, dass sich die Protokolle in Fedora 33 (Beta) nicht drehen

Umgebung Fedora 33(beta) x86_64 cronie-1.5.5-4.fc33.x86_64 cronie-anacron-1.5.5-4.fc33.x86_64 logrotate-3.17.0-3.fc33.x86_64 systemd-246.6-3.fc33.x86_64

Symptome Ich möchte stündlich logrotieren, aber es dreht sich nicht in den erwarteten Intervallen.

Reproduktionsverfahren (1) Installieren Sie Fedora 33 (Beta) mit einem Minimum (2) Installieren Sie Cronie, Cronie-Anacron und Crontabs (3) Installieren Sie rsyslog und logrotate (4) In Bezug auf die Rotation von / var / log / messages in /etc/logrotate.d/rsyslog Stellen Sie das Protokollrotationsintervall auf stündlich ein. (5) Warten Sie einige Stunden

Voraussichtliches Ergebnis / var / log / messages usw. werden stündlich gedreht.

Tatsächliche Ergebnis / var / log / messages etc. werden auch nach mehrstündigem Warten nicht gedreht.

Ursache Die Standardstartmethode für logrotate wurde von cron auf systemd-timer geändert. Weil das Standardoperationsintervall von logrotate täglich ist.

Einzelheiten Früher wurde logrotate von cron / anacron gemacht, heute jedoch systemd-timer Fedora-Entwickler möchten es in die Richtung lenken, in der Protokolle gedreht werden Es scheint zu geben. Sobald das logrotate RPM-Paket /etc/cron.daily/logrotate enthielt Es war, aber

* Wed Nov 21 2018 Alejandro Domínguez Muñoz <[email protected]> - 3.14.0-5
- add make as a build dependency
- replace cron job with a systemd timer unit (#1502085, #1655153)

Zu diesem Zeitpunkt scheint diese Einstellungsdatei nicht mehr enthalten zu sein. Stattdessen /usr/lib/systemd/system/logrotate.timer, logrotate.service Ist enthalten, müssen Sie es aktivieren.

# systemctl enable logrotate.timer

Ich warte eine Weile, aber die Protokollrotation wird nicht jede Stunde ausgeführt. Die Ursache war die anfängliche Einstellung in logrotate.timer.

/usr/lib/systemd/system/logrotate.timer
OnCalendar = daily 

Aus diesem Grund wird die Protokollierung einmal täglich (nach Mitternacht) als Grundeinstellung gestartet Es ist geworden. Daher, auch wenn stündlich in die Logrotate-Einstellungsdatei geschrieben ist Die Protokollrotation wurde nicht durchgeführt, da die Protokollrotation nicht stündlich ausgeführt wurde.

Wie repariert man

# cp /usr/lib/systemd/system/logrotate.timer /etc/systemd/system/
# cp /usr/lib/systemd/system/logrotate.service /etc/systemd/system/
# vi /etc/systemd/system/logrotate.timer
Vor der Korrektur: OnCalendar=daily
Überarbeitet: OnCalendar=hourly

# systemctl daemon-reload
# systemctl enable logrotate.timer

Dies ist der erwartete Schritt.

Referenz https://bugzilla.redhat.com/show_bug.cgi?id=1757726

Recommended Posts

Die Gefahr, dass sich die Protokolle in Fedora 33 (Beta) nicht drehen
Zu dem Problem, dass der Inhalt von Python print in Docker-Protokollen nicht sichtbar ist
Laden Sie Pakete, die sich nicht in Conda befinden, auf anaconda.org hoch und verwalten Sie sie