Ich habe zwei verschiedene (i386 v AMD) Debian-Boxen und habe das gleiche Problem. logrotate dreht meine Protokolle nicht automatisch. Es funktioniert gut, wenn ich es manuell wie erzwinge
/usr/sbin/logrotate -f /etc/logrotate.conf
aber es ist nicht okay für mich.
Die Einstellungen wurden nicht geändert (zumindest habe ich sie nicht geändert). Die AMD-Box ist eine Neuinstallation, macht aber ihren Job nicht.
Wenn Sie ein ähnliches Problem bemerkt haben, helfen Sie mir bitte.
Update (einige Serverausgaben):
logrotate -d
http://pastebin.com/e6AshtGq
ls -l /var/log
http://pastebin.com/Y2A4Li59
cat /etc/logrotate.conf
http://pastebin.com/1h7Uwctr
ls -l /etc/logrotate.d
http://pastebin.com/NvUAeszM
debian
logrotate
debian-squeeze
fabrik
quelle
quelle
...rsyslogd was HUPed...
nicht sicher , ob dies etwas bedeutet.cron.daily
aber das Drehen wird nicht stattfinden.Antworten:
Überprüfen Sie, ob Ihr Logrotate von Cron ausgeführt wird.
Bearbeiten:
Aus der Kommentardiskussion geht hervor, dass cron nicht richtig funktioniert. Ich hatte einen Cronjob in meinem Crontab ohne Benutzer, aber dieser wurde erst sichtbar, als ich den Cron-Daemon neu startete
Meine Ubuntu- und Centos-Systeme haben eine
/etc/cron.daily/logrotate
Datei, deren Inhalt istMein / etc / crontab hat die folgende Zeile, um die täglichen Jobs auszuführen
quelle
ps -ef | grep cron| grep -v grep
? Überprüfen Sie die Ausgabe von ? Fügen Sie am Anfang von /etc/cron.daily/logrotate ein Echo hinzuecho "logrotate runing" >>/tmp/logrotate.out
und prüfen Sie, ob es erstellt wird.cron
ist betriebsbereit, führt jedoch den täglichen Logrotate-Job nicht aus. Wenn ich/etc/cron.daily/logrotate
manuell starte, dreht es meine Protokolle,/tmp/logrotate.out
auch geschrieben./etc/cron.daily/logrotate
also habe ich einen-f
Parameter hinzugefügt , um das Drehen zu erzwingen, aber heute Morgen wurden meine Protokolle nicht gedreht.Ich hatte ein ähnliches Problem,
crontab
funktionierte aber und für einige der Protokollverzeichnisselogrotate
funktionierte es, für einige jedoch nicht. Als ich versuchte, die Protokollierung manuell auszuführen, wurden einige Fehlermeldungen angezeigt.Alle
*.1.gz
Dateien hatten eine Größe von 0. Ich habe alle in der Fehlermeldung genannten Dateien manuell gelöscht,sudo /usr/sbin/logrotate -f /etc/logrotate.conf
erneut ausgeführt und es hat funktioniert.Ich dachte nur, ich sollte diese alternative Lösung auch hier teilen, da dies das erste Suchergebnis war, das für mich auftauchte, als ich nach dem Problem suchte, aber die vorgeschlagene Lösung für mich nicht funktionierte. Vielleicht hilft das auch anderen, die sich in der gleichen Situation befinden wie ich.
quelle
Ich weiß, ich weiß. 5 Jahre alter Thread.
Ich dachte nur, wenn es bei den Suchanfragen immer noch recht hoch ist, werde ich einen Beitrag leisten und meine Lösung für das Problem geben, auf das ich gestoßen bin. Meine Logrotate-Jobs wurden auf einem meiner Server nicht automatisch verarbeitet. Das Erzwingen der Rotation hat gut funktioniert. Nachdem ich den täglichen Rotationsbefehl von Hand ausgeführt hatte, kam ich auf eine Lösung:
Dann sah ich den Fehler, der das Auslösen von Logrorate-Jobs verhinderte:
Ja, so einfach ist das. Ich hatte zwei Dateien, die die gleichen Protokolle zum Drehen definierten (iptraf und iptraf-ng). Nur eine der widersprüchlichen Logrotate-Definitionen für iptraf zu entfernen, hat den Trick getan.
Ein weiteres Problem könnte eine verpfuschte / etc / crontab-Datei sein. Dies bedeutet, dass die Syntax dieser Datei doppelt oder dreifach überprüft wird, da sie keine Ausgabe liefert, die ich finden könnte, wenn die Syntax falsch ist. Wird nach fehlgeschlagener Syntaxüberprüfung leise beendet.
Hoffe das spart jemandem etwas Zeit.
quelle
OK, ich hatte ein ähnliches Problem.
"Protokolle werden nicht gedreht?" aber logrotate manuell ausführen (oder das ausführen
/etc/cron.daily
und es dreht sie ganz gut.Es scheint also, dass Cron einfach nicht "täglich läuft". Seltsam. Also habe ich in der Protokolldatei nachgesehen, in der cron seine Daten ausgibt, und festgestellt, dass "Authentifizierungstoken nicht mehr gültig ist; neues erforderlich", um dieses spezielle Problem zu beheben (siehe hier)
quelle
Ich habe gesehen, dass dies im Laufe der Zeit häufig vorkommt, wenn sich Dienste ändern und die in logrotate verwendeten Optionen überarbeitet wurden, was dazu führt, dass logrotate jeden Tag fehlschlägt.
Um Ihnen eine Vorstellung zu geben, bestand der letzte Fix darin, dass die Option notifyempty in der Apache-Logrotate-Datei nicht mehr gültig war, was wiederum dazu führte, dass Logrotate alle zusammen gestoppt wurden.
Obwohl dies bis zu einem gewissen Punkt behandelt wurde, möchte ich Ihnen den Prozess mitteilen, den ich beim Aufspüren dieser Probleme durchlaufe:
#/usr/sbin/logrotate -f /etc/logrotate.conf
, um nach Fehlern zu suchen (z. B. Postfix: 3 'missingok').Die Datei und die Zeilennummer, auf die sie sich beziehen, sind die Dateien im Ordner logrotate.d.
# vi /etc/logrotate.d/postfix
und entfernen Sie die Option, die das Problem verursacht, und speichern Sie die Datei.Es gibt Zeiten, in denen der erste Schritt einfach etwas ausgibt, aber Sie wissen, dass es ein Problem gibt. Da diese ganze Sache gestartet wurde, weil die Protokolldateien für einen Dienst nicht gedreht wurden, können Sie den Protokollierungsprozess beobachten, der nach diesem bestimmten Dienst sucht, um zu sehen, was ihn daran hindert, sich zu drehen. Fügen Sie dazu das ausführliche Tag zu Ihrem Befehl logrotate hinzu und beobachten Sie, was in diesem Ordner passiert (falls vorhanden).
quelle
Überprüfen Sie, ob die Konfigurationsparameter für die Protokollierung in Konflikt stehen.
Ich hatte mit diesem Problem zu kämpfen und habe endlich einige Dokumentationen zu logrotate sehr genau gelesen. Ich habe hier einige nützliche Dokumentationen gefunden .
Ich hatte sowohl einen Größenparameter als auch einen Rotationsintervallparameter angegeben, obwohl ich eigentlich keinen wollte. Ich wollte, dass meine Rotationen genau dann stattfinden, wenn sie in cron geplant waren.
So erhalten Sie das rid Rotationsintervall und Größe Parameter. Dann erhalten Sie jedes Mal eine Rotation, wenn logrotate aufgerufen wird, ohne dass Sie dies erzwingen müssen.
EDIT : OK, auch das funktioniert nicht ganz! Wenn die Protokolldatei unter einem bestimmten Schwellenwert liegt, werden die Protokolle nicht gedreht. Wenn ich also einen Cron-Job ausführte, der alle 2 Minuten gedreht wurde, wurden die Protokolle nicht gedreht.
Sie können detaillierte Debug-Informationen anzeigen, wenn Sie ausführen
logrotate -d
. Dies bietet einige sehr nützliche Debug-Informationen.quelle