environnement 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
Symptômes Je veux me connecter toutes les heures, mais cela ne tourne pas aux intervalles prévus.
Procédure de reproduction (1) Installez Fedora 33 (bêta) avec un minimum (2) Installer cronie, cronie-anacron, crontabs (3) Installez rsyslog et logrotate (4) Concernant la rotation de / var / log / messages dans /etc/logrotate.d/rsyslog Définissez l'intervalle de rotation du journal sur toutes les heures. (5) Attendez quelques heures
Résultat prospectif / var / log / messages etc. sont tournés toutes les heures.
Résultat actuel / var / log / messages etc. ne sont pas tournés même après avoir attendu plusieurs heures.
Cause La méthode de démarrage par défaut de logrotate est passée de cron à systemd-timer. Parce que l'intervalle de fonctionnement par défaut de logrotate est quotidien.
Détails Dans l'ancien temps, logrotate était fait à partir de cron / anacron, mais de nos jours, systemd-timer Les développeurs Fedora veulent l'amener dans le sens de l'utiliser pour faire pivoter les journaux Il semble y avoir. Une fois le package logrotate RPM inclus /etc/cron.daily/logrotate C'était, mais
* 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)
À ce moment-là, il semble que ce fichier de paramètres ne soit plus inclus. Au lieu de cela, /usr/lib/systemd/system/logrotate.timer, logrotate.service Est inclus, vous devez donc l'activer.
# systemctl enable logrotate.timer
J'attends un moment, mais la rotation du journal n'est pas exécutée toutes les heures. La cause était le paramètre initial dans logrotate.timer.
/usr/lib/systemd/system/logrotate.timer
OnCalendar = daily
Parce que c'est le cas, logrotate est démarré une fois par jour (après minuit) comme paramètre initial Il est devenu. Par conséquent, même si une heure est écrite dans le fichier de paramètres logrotate La rotation du journal n'a pas été effectuée car logrotate n'était pas exécuté toutes les heures.
Comment réparer
# 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
Avant correction: OnCalendar=daily
modifié: OnCalendar=hourly
# systemctl daemon-reload
# systemctl enable logrotate.timer
C'est le mouvement attendu.
référence https://bugzilla.redhat.com/show_bug.cgi?id=1757726