Nach dem dem Unix und Linux Administration Handbuch und man
, logrotate hat Optionen für daily
, weekly
und monthly
, aber gibt es eine Möglichkeit , eine hinzuzufügen hourly
Option?
Dieser Blog - Eintrag erwähnt Sie festlegen können , size 1
die Zeit Option und entfernen (zB: daily
) und dann manuell aufrufen logrotate
mit 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?
Antworten:
Abhängig von Ihrem Betriebssystem. Einige (alle?) Linux-Distributionen haben ein Verzeichnis,
/etc/cron.hourly
in 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 undcp /dev/null
an 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
dateext
Richtlinie 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 dersize
Schwellenwert ü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
dateext
Direktive 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 derrotate
Wert erreicht ist. Auf diese Weise ist es möglich, mehrere Rotationen pro Tag durchzuführen.quelle
Nur um Nils Antwort hinzuzufügen, wenn Sie den Ort des
logrotate
Skripts auf einer Debian- oder Ubuntu-Box ändern , ist es wahrscheinlich sicherer, es zu verwenden,dpkg-divert
anstatt nur die Datei zu kopieren und/dev/null
an die ursprüngliche Position zu kopieren , zB:quelle
Eine andere Option wäre das Hinzufügen des Befehls logrotate zur crontab-Liste. Dann wird es für jede Stunde ausgeführt.
Füge folgende Zeile in die Crontab-Liste ein
quelle