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