2025-07-11 19:00:04 +00:00
2025-07-11 19:00:04 +00:00
1
2025-07-11 11:39:34 +02:00

Logrotate Automatisierungsskript

Dieses einfache Bash-Skript automatisiert die Ausführung von logrotate für spezifische Logdateien. Es stellt sicher, dass deine Logs effektiv verwaltet werden, um Problemen mit dem Festplattenspeicher vorzubeugen und die Systemleistung zu verbessern.


Funktionen

  • Automatisierte Log-Rotation: Führt logrotate automatisch mit einer spezifischen Konfiguration aus.
  • Statusverfolgung: Verwendet eine Statusdatei, um die Zeiten der letzten Rotationen zu verfolgen.
  • Fehlerbehandlung: Prüft das Vorhandensein der Konfigurationsdatei und protokolliert Fehler, falls diese fehlt.
  • Protokollierung: Zeichnet den Ausführungsstatus und eventuelle Fehler in einer dedizierten Logdatei auf.

Erste Schritte

Diese Anweisungen helfen dir, das Skript auf deinem System einzurichten und auszuführen.

Voraussetzungen

  • logrotate: Dieses Dienstprogramm ist in der Regel auf den meisten Linux-Distributionen vorinstalliert. Falls nicht, kannst du es mit dem Paketmanager deines Systems installieren (z.B. sudo apt-get install logrotate unter Debian/Ubuntu, sudo yum install logrotate unter CentOS/RHEL).

Installation

  1. Skript speichern: Kopiere den Inhalt des bereitgestellten Skripts in eine Datei (z.B. run_logrotate.sh) in deinem gewünschten Verzeichnis.
  2. Ausführbar machen: Gib dem Skript Ausführungsberechtigungen:
    chmod +x run_logrotate.sh
    
  3. Konfiguration erstellen: Erstelle eine Datei logrotate.cfg im selben Verzeichnis wie das Skript. Diese Datei enthält deine logrotate-Regeln.
  4. Log- und Statusdateien erstellen: Das Skript erstellt diese, falls sie nicht existieren, aber du kannst auch leere Dateien manuell erstellen, wenn du möchtest:
    touch logrotate.status
    touch logrotate.log
    

Verwendung

Konfiguration (logrotate.cfg)

Die Datei logrotate.cfg definiert, wie deine Logs rotiert werden sollen. Hier ist ein einfaches Beispiel:

/var/log/my_app/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 640 root adm
    dateext
}
  • Ersetze /var/log/my_app/*.log durch den tatsächlichen Pfad zu deinen Logdateien.
  • daily: Rotiert Logs täglich.
  • rotate 7: Behält 7 rotierte Logdateien.
  • compress: Komprimiert alte Logdateien.
  • missingok: Gibt keinen Fehler aus, wenn die Logdatei fehlt.
  • notifempty: Rotiert das Log nicht, wenn es leer ist.
  • create 640 root adm: Erstellt neue Logdateien mit den angegebenen Berechtigungen und Eigentümer.
  • dateext: Archiviert rotierte Logs, indem eine Datums-Erweiterung hinzugefügt wird.

Weitere Details zur logrotate-Konfiguration findest du in der logrotate-Manpage (man logrotate).

Ausführen des Skripts

Du kannst das Skript manuell ausführen:

./run_logrotate.sh

Automatisierung (Cron-Job)

Um die Log-Rotation zu automatisieren, wird empfohlen, einen Cron-Job einzurichten.

  1. Öffne deine Crontab zur Bearbeitung:
    crontab -e
    
  2. Füge eine Zeile hinzu, um das Skript in deinem gewünschten Intervall auszuführen. Zum Beispiel, um es täglich um 3:00 Uhr morgens auszuführen:
    0 3 * * * /home/oberkoetter/Dokumente/Git/rettedpv/run_logrotate.sh >> /dev/null 2>&1
    
    Stelle sicher, dass du /home/oberkoetter/Dokumente/Git/rettedpv/run_logrotate.sh durch den tatsächlichen vollständigen Pfad zu deinem Skript ersetzt. Der Teil >> /dev/null 2>&1 leitet die Standardausgabe und Fehler nach `/dev/null um, um unnötige E-Mails von Cron zu verhindern.

Skript-Details

Das Skript führt die folgenden Aktionen aus:

  1. Verzeichnis wechseln: Navigiert nach /home/oberkoetter/Dokumente/Git/rettedpv. Hinweis: Diesen Pfad solltest du anpassen, falls du das Skript verschiebst.
  2. Pfade definieren: Setzt Variablen für die Dateien logrotate.cfg, logrotate.status und logrotate.log innerhalb des aktuellen Arbeitsverzeichnisses.
  3. Konfiguration prüfen: Überprüft, ob logrotate.cfg existiert. Falls nicht, wird ein Fehler protokolliert und das Skript beendet.
  4. Logrotate ausführen: Führt logrotate im erzwungenen Modus (-f) unter Verwendung der angegebenen Konfigurations- und Statusdateien aus.
  5. Erfolg protokollieren: Fügt eine Erfolgsmeldung zur Datei logrotate.log hinzu, nachdem eine erfolgreiche Ausführung stattgefunden hat.

Projektstruktur

.
├── run_logrotate.sh
├── logrotate.cfg
├── logrotate.log
└── logrotate.status
  • run_logrotate.sh: Das Hauptskript zur Ausführung von logrotate.
  • logrotate.cfg: Die Konfigurationsdatei für logrotate.
  • logrotate.log: Protokolliert die Ausführungshistorie des Skripts.
  • logrotate.status: Logrotates interne Statusdatei.

Fehlerbehebung

  • "Fehler: Konfigurationsdatei './logrotate.cfg' nicht gefunden.": Stelle sicher, dass logrotate.cfg sich im selben Verzeichnis wie das Skript befindet, oder aktualisiere die Variable CONFIG im Skript auf den korrekten Pfad.
  • Skript wird nicht über Cron ausgeführt: Überprüfe den Cron-Job-Eintrag auf korrekte Pfade und Berechtigungen. Du kannst dies testen, indem du das Skript manuell ausführst. Prüfe auch deine logrotate.log auf Fehler.
  • Logdateien werden nicht rotiert: Überprüfe die Syntax deiner logrotate.cfg. Du kannst deine logrotate-Konfiguration direkt testen, indem du logrotate -d deine_konfigurationsdatei (Debug-Modus) oder logrotate -f deine_konfigurationsdatei (Erzwingungsmodus) verwendest.

Description
Kleines Script, dass logrotate für eigene Log-Dateien vereinfacht.
Readme 32 KiB
Languages
Shell 100%