Files
rotate/README.md
2025-07-11 18:59:45 +00:00

132 lines
5.7 KiB
Markdown

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.
-----