5.6 KiB
5.6 KiB
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
logrotateautomatisch 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 logrotateunter Debian/Ubuntu,sudo yum install logrotateunter CentOS/RHEL).
Installation
- Skript speichern: Kopiere den Inhalt des bereitgestellten Skripts in eine Datei (z.B.
run_logrotate.sh) in deinem gewünschten Verzeichnis. - Ausführbar machen: Gib dem Skript Ausführungsberechtigungen:
chmod +x run_logrotate.sh - Konfiguration erstellen: Erstelle eine Datei
logrotate.cfgim selben Verzeichnis wie das Skript. Diese Datei enthält deinelogrotate-Regeln. - 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/*.logdurch 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.
- Öffne deine Crontab zur Bearbeitung:
crontab -e - 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:
Stelle sicher, dass du
0 3 * * * /home/oberkoetter/Dokumente/Git/rettedpv/run_logrotate.sh >> /dev/null 2>&1/home/oberkoetter/Dokumente/Git/rettedpv/run_logrotate.shdurch den tatsächlichen vollständigen Pfad zu deinem Skript ersetzt. Der Teil>> /dev/null 2>&1leitet 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:
- Verzeichnis wechseln: Navigiert nach
/home/oberkoetter/Dokumente/Git/rettedpv. Hinweis: Diesen Pfad solltest du anpassen, falls du das Skript verschiebst. - Pfade definieren: Setzt Variablen für die Dateien
logrotate.cfg,logrotate.statusundlogrotate.loginnerhalb des aktuellen Arbeitsverzeichnisses. - Konfiguration prüfen: Überprüft, ob
logrotate.cfgexistiert. Falls nicht, wird ein Fehler protokolliert und das Skript beendet. - Logrotate ausführen: Führt
logrotateim erzwungenen Modus (-f) unter Verwendung der angegebenen Konfigurations- und Statusdateien aus. - Erfolg protokollieren: Fügt eine Erfolgsmeldung zur Datei
logrotate.loghinzu, 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.cfgsich im selben Verzeichnis wie das Skript befindet, oder aktualisiere die VariableCONFIGim 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.logauf Fehler. - Logdateien werden nicht rotiert: Überprüfe die Syntax deiner
logrotate.cfg. Du kannst deinelogrotate-Konfiguration direkt testen, indem dulogrotate -d deine_konfigurationsdatei(Debug-Modus) oderlogrotate -f deine_konfigurationsdatei(Erzwingungsmodus) verwendest.