Ich habe mich gefragt, ob es einen richtigen Weg gibt, um Protokolle im Allgemeinen zu löschen.
Ich bin neu in Ubuntu und versuche, Postfix einzurichten. Das fragliche Login ist /var/log/mail.log
. Ich habe mich gefragt, ob es einen richtigen Weg gibt, es zu löschen, anstatt dass ich alle Zeilen lösche und speichere. Ich finde, dass manchmal Fehler nicht sofort geschrieben werden, nachdem ich das Protokoll gelöscht und gespeichert habe.
Randnotiz: Ich habe Probleme beim Einrichten von Postfix und versuche, das Lesen der Protokolle zu vereinfachen, in der Hoffnung, dass es mir helfen kann, anstatt einen Bildlauf bis zum Ende durchzuführen.
Antworten:
Sie können verwenden:
Dadurch wird das Protokoll abgeschnitten, ohne dass Sie die Datei bearbeiten müssen. Es ist auch ein zuverlässiger Weg, um den Platz zurückzugewinnen. Manchmal machen die Leute den Fehler, rm im Protokoll zu verwenden und dann den Dateinamen neu zu erstellen. Wenn bei einem anderen Prozess die Datei geöffnet ist, erhalten Sie den Speicherplatz erst zurück, wenn dieser Prozess seine Zugriffsrechte schließt und Sie seine Berechtigungen durcheinander bringen können.
Wenn Sie sich den Inhalt des Protokolls ansehen, können Sie auch den folgenden
tail
Befehl verwenden:Strg-C bricht das Tailing ab.
quelle
/bin/csh
(gebräuchlich für FreeBSD) würde dies mit "Invalid null command"zsh
beheben, während (populärer Ersatz fürbash
) auf EOF warten würde. Siehe serverfault.com/a/381380/67675>
Syntax in crontab wird nicht ausgeführt, da es möglicherweise nicht als Syntax erkannt wirdJa, es gibt einen richtigen Weg: Sie löschen überhaupt keine Protokolle. Sie drehen sie. Bei der Rotation wird die Protokollausgabe auf eine neue Datei mit demselben Namen umgeschaltet, wobei die vorherigen N Protokolldateien unter einem Satz von N verwandten Dateinamen gespeichert werden.
Wie man Protokolle dreht, hängt davon ab, wie man sie zuerst schreibt. Dies ist ein oft übersehener Punkt. Einige der hier gegebenen Antworten beziehen sich zumindest darauf und erwähnen, dass einige Protokollierungsprogramme einen offenen Dateideskriptor für die Protokolldatei beibehalten, sodass nur das Löschen der Datei nicht den Speicherplatz freigibt oder sogar die Ausgabe auf eine neue Protokolldatei umschaltet.
Wenn das Programm, mit dem die Protokolldatei geschrieben wird , zum Beispiel
multilog
aus demdaemontools
Paket stammt , tun Sie nichts, um die Protokolle überhaupt zu drehen - keine manuellen Skripte, keinecron
Jobs. Sagen Sie einfach,multilog
dass sich die Protokollausgabe in einem Verzeichnis befindet, und es wird selbst eine automatisch gedrehte und größenbegrenzte Menge von N Protokolldateien in diesem Verzeichnis beibehalten.Wenn das Programm, mit dem die Protokolldateien geschrieben werden, beispielsweise
svlogd
aus demrunit
Paket stammt , gilt das Gleiche. Sie tun nichts anderes, als das Tool auf ein Verzeichnis zu richten. Es verwaltet selbst einen automatisch gedrehten und größenbegrenzten Satz von N Protokolldateien in diesem Verzeichnis.Wenn Sie
rsyslog
zum Schreiben von Protokolldateien verwenden, kann das Protokollierungsprogramm angewiesen werden, anzuhalten, nachdem die Protokolldatei eine bestimmte Größe erreicht hat, und ein Skript auszuführen . Sie müssen das Fleisch des Skripts schreiben, um die Protokolldatei tatsächlich umzubenennen und alte Protokolldateien basierend auf Gesamtgrößenbeschränkungen zu löschen, aber zumindest hat das Protokollierungsprogramm die Datei geschlossen und das Schreiben von Protokollen angehalten, während dies geschieht.Die alte
syslogd
Methode zum Rotieren von Protokollen, die immer noch von Protokollierungsprogrammen wie syslog-ng erwartet wird und anhand von Tools veranschaulicht wird, wielogrotate
siedjangofan
in einer anderen Antwort erwähnt wurden, ist etwas willkürlicher. Einer führt einencron
Job aus, der die Protokolldateien regelmäßig umbenennt und den Protokollierungsdämon neu startet (mit dem Dämon-Supervisor, unter dem er ausgeführt wird). Das Problem dabei ist natürlich, dass keine Obergrenze für die Gesamtgröße festgelegt wird. In langsamen Wochen können N sehr kleine tägliche Protokolldateien abgerufen werden, während an geschäftigen Tagen 1 sehr große Protokolldatei abgerufen werden kann, die weit über der Größenbeschränkung liegt.Aus diesem Grund mögen
multilog
undsvlogd
haben spätere und bessere Tools Konfigurationsoptionen für die Dateigröße und prüfen die Protokolldateigrößen natürlich selbst. Die Welt hat erfahren, dass das Abrufen der Protokolle nach einem Zeitplan mitcron
Aufträgen oder sogar einemlogrotate
Daemon Fenster für die falsche Größe und den richtigen Ort für diese Überprüfungen belässt und die vom Administrator festgelegten Größenbeschränkungen so rigoros erzwingt , dass sie eingehalten werden Protokolldateien verschlucken niemals die Partition, auf der sie sich befinden, und befinden sich in dem Programm, das die Dateien tatsächlich an erster Stelle ausschreibt.quelle
template(name="DYNmail" type="string" string="/var/log/%$YEAR%/%$MONTH%/%$DAY%/mail.log")
Direktive, gefolgt von einemif ($syslogfacility-text == 'mail') then -?DYNmail;TraditionalFormat
. Auf diese Weise ist die Protokollrotation einfach kein Problem, zumindest wenn eine einzelne Datei pro Tag in Ordnung ist. Für sehr große Holzmengen (die mehrere Rotationen pro Tag erfordern) gilt dies$HOUR
ebenfalls.Sie können dies auch verwenden ..
Hier werden alle Protokolldateien in / opt / package / logs leer.
quelle
Ja, für Linux gibt es ein Tool namens LogRotate .
quelle
Wenn Sie das Protokoll löschen, um Speicherplatz freizugeben, können Sie cat / dev / null verwenden, ohne Programme zu unterbrechen, die in das Protokoll schreiben. Lösche sie niemals! Manche Software beschwert sich möglicherweise, indem sie aufhört zu arbeiten oder das Protokoll bis zum nächsten Neustart vollständig ignoriert
quelle
for i in $(find /var/log -type f); do cat /dev/null > $i; done
Kurzes und kompatibles Überschreiben von Inhalten:
: > /dest/file
Es gibt aber auch einen Systemaufruf
truncate
vom Typ truncate (2) und ein entsprechendes Userspace-Tool auf vielen * NIX-Systemen.quelle
Wenn Sie die Datei behalten möchten, bevor Sie sie bereinigen, können Sie Folgendes tun:
Wenn Sie nach einem bestimmten Text oder einer bestimmten E-Mail im Protokoll suchen möchten, können Sie grep verwenden. Wenn Sie einige Grafiken zur Mailnutzung behalten möchten, können Sie AWStats verwenden.
quelle
Hier ist, wie ich es mache, und dies ist nur für NGINX, Sie können das entfernen, damit es auf allen Protokolldateien funktioniert.
quelle
Funktioniert bei mir
quelle