Hat jemand Probleme mit logrotate gehabt, die dazu geführt haben, dass eine Protokolldatei gedreht wurde und dann wieder die ursprüngliche Größe hatte? Hier sind meine Ergebnisse:
Logrotate-Skript:
/var/log/mylogfile.log { drehen 7 Täglich komprimieren olddir / log_archives Missingok notifempty copytruncate }}
Ausführliche Ausgabe von Logrotate:
Kopieren von /var/log/mylogfile.log nach /log_archives/mylogfile.log.1 Abschneiden von /var/log/mylogfile.log Protokoll komprimieren mit: / bin / gzip Entfernen des alten Protokolls /log_archives/mylogfile.log.8.gz
Protokolldatei nach dem Abschneiden passiert
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 Teil1 Teil1 0 11. Januar 17:32 /var/log/mylogfile.log
Buchstäblich Sekunden später:
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 Teil1 Teil1 3.5G 11. Januar 17:32 /var/log/mylogfile.log
RHEL Version:
[root @ server ~] # cat / etc / redhat-release Red Hat Enterprise Linux ES Version 4 (Nahant Update 4)
Logrotate Version:
[root @ DAA21529WWW370 ~] # rpm -qa | grep logrotate logrotate-3.7.1-10.RHEL4
Einige Anmerkungen:
- Der Dienst kann nicht sofort neu gestartet werden. Deshalb verwende ich copytruncate
- Die Protokolle werden jede Nacht gedreht, je
olddir
nachdem, in welchem Verzeichnis sich die Protokolldateien von jeder Nacht befinden.
Ich bin sehr zuversichtlich, dass Kjetil es geschafft hat. Drew, Sie sind vielleicht noch nicht von seiner Erklärung überzeugt, aber ich fordere Sie auf, sorgfältig zu lesen, was er gesagt hat.
Wenn Sie dies akzeptieren, müssen Sie entweder Ihre Anwendung stoppen und neu starten, wenn die Protokolle gedreht werden, oder ein Tool wie die "Rotatelogs" von Apache verwenden, bei dem Sie die Protokollausgabe über eine Pipe an das Tool weiterleiten und das Tool sich darum kümmert Drehen Sie die Protokolldatei von Zeit zu Zeit. Zum Beispiel protokolliert eine meiner Apache-Instanzen mit
was viele Protokolldateien mit Namen wie verursacht
erscheinen, ohne Apache neu zu starten; Ich kann sie dann nachträglich manuell komprimieren. Beachten Sie, wie die Rotation jede Woche durchgeführt wird, dh alle 604800 Sekunden, wobei dies das Argument ist, an das übergeben wird
rotatelogs
.Wenn Sie die App nicht stoppen und neu starten können und sie nicht über eine Pipe protokolliert werden kann, haben Sie wahrscheinlich ein echtes Problem. Vielleicht haben andere Vorschläge.
quelle
Es wäre wirklich großartig, wenn Sie den gesamten Logrotate senden könnten.
Warum versuchen, kill -HUP zu verwenden? Methode (Klassisches Nachladen nicht Neustart ).
Überprüfen Sie außerdem,
lsof
wer auf die Datei zugreift.quelle
kill -HUP
da diese Anwendung in keiner Weise berührt werden kann - es ist eine vertrauliche Anwendung, die ich nicht besitze (ich verwalte sie nicht einmal - ich verwalte nur die Betriebssystemseite), daher muss ich in der Lage sein, die Protokollierungen durchzuführen Weg./etc/cron.daily
wurde. Frage an alle: Gibt es etwas, das das logrotate-Skript anders macht als das manuelle Ausführen von logrotate? Mein Logrotate-Skript sieht buchstäblich so aus/usr/sbin/logrotate /etc/logrotate.conf
. Das ist ziemlich verwirrend.Verwenden Sie einfach ">>", was "Anhängen" anstelle von ">" bedeutet, was bedeutet, dass Sie aus Ihren Skripten erstellen, die in diese Datei schreiben. Ich hatte genau das gleiche Problem und habe es mithilfe von Anhängen in meinem Skript behoben.
SomeScript.sh >> output.txt
Hoffe das ist klarer.
quelle
>
eines Skripts erfolgt. Darüber hinaus ist diese Antwort verwirrend, da es einen großen Unterschied zwischen>
und>(
)
in Skripten gibt. Wenn der Code, der das Schreiben ausführt, aktualisiert wird, ist es viel besser, wenn er einfach mit dem Schreiben in die neue Protokolldatei beginnt, nachdemlogrotate
er seine Aufgabe erledigt hat.