GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Abhängig von Ihrem Betriebssystem. Einige (alle?) Linux-Distributionen haben ein Verzeichnis /etc/cron.hourly wo Sie Cron-Jobs setzen können, die stündlich ausgeführt werden.

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

Wenn Sie eines davon anstelle des standardmäßigen Protokollrotationsskripts in /etc/cron.daily/ verwenden Sie sollten dieses Skript dorthin kopieren und cp /dev/null zur ursprünglichen Position. Andernfalls wird es durch ein Logrotate-Patch-Update wieder aktiviert.

Achten Sie für eine ordnungsgemäße stündliche Rotation auch darauf, dass die dateext Direktive ist nicht einstellen. Wenn dies der Fall ist, erhält die erste rotierte Datei standardmäßig die Erweiterung des aktuellen Datums, z. B. JJJJMMTT. Wenn dann logrotate das zweite Mal am selben Tag aktiv wird, überspringt es einfach die Rotation, selbst wenn der size Schwellenwert überschritten.

Der Grund dafür ist, dass der neue Name der zu rotierenden Datei bereits existiert und logrotate den Inhalt nicht an die vorhandene alte Datei anhängt. Zum Beispiel auf RHEL und CentOS der dateext Direktive ist standardmäßig in /etc/logrotate.conf angegeben . Nach dem Entfernen oder Kommentieren dieser Zeile erhalten die rotierten Dateien einfach eine laufende Nummer als Erweiterung, bis sie den rotate erreichen Wert. Auf diese Weise ist es möglich, mehrere Rotationen pro Tag durchzuführen.


Nur um Nils Antwort zu ergänzen, wenn die Position des logrotate geändert wird -Skript auf einem Debian- oder Ubuntu-Rechner, ist es wahrscheinlich sicherer, dpkg-divert zu verwenden anstatt nur die Datei zu kopieren und /dev/null zu kopieren an die ursprüngliche Position z. B.:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

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

crontab -e

füge die folgende Zeile in die Crontab-Liste ein

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

Linux
  1. Fehler in Sudoers-Datei? So können Sie es beheben.

  2. Wie wird /etc/motd aktualisiert?

  3. CentOS / RHEL :So rotieren Sie /var/log/wtmp- und /var/log/btmp-Dateien mit logrotate

  4. Wie richte ich einen Cron-Job ein, um jede Stunde eine ausführbare Datei auszuführen?

  5. Wie kann ich die automatische Vervollständigung für Git-Befehle einrichten?

So richten Sie einen Cron-Job unter Linux ein

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Centos – Wie werden alle Cron-Datensätze in Centos7 angezeigt?

CentOS / RHEL:So stellen Sie eine gelöschte /etc/passwd-Datei wieder her

Wie können wir unter Linux eine Liste von Nicht-Systembenutzern erhalten?

So verwenden Sie @reboot in /etc/cron.d