Absolut\! Hier ist eine schöne `README.md` auf Deutsch für dein Skript: ----- # 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: ```bash 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: ```bash 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: ```bash ./run_logrotate.sh ``` ### Automatisierung (Cron-Job) Um die Log-Rotation zu automatisieren, wird empfohlen, einen Cron-Job einzurichten. 1. Öffne deine Crontab zur Bearbeitung: ```bash 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: ```cron 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. -----