it-swarm.com.de

Alle / var / log löschen?

Kann ich alles in /var/log Löschen? Oder sollte ich nur Dateien (rekursiv) in /var/log Löschen, aber Ordner belassen?

Hat jemand eine gute rm Kommandozeile? (Meine Verwaltungsfähigkeiten machen mich nervös.)

Hinweis : Ich benutze Debian. Ich bin nicht sicher, welche Version.

28
user274

Anstatt die Dateien zu löschen, sollten Sie sie drehen, z. G. mit logrotate.

Sie wissen nie, wann Sie die Protokolle von vor einiger Zeit tatsächlich benötigen, daher ist es besser, sie zu archivieren (bis zu einem angemessenen Alter, z. B. 3 Monate).

logrotate kann Ihre alten Protokolldateien komprimieren, sodass sie nicht viel Speicherplatz belegen.

22
joschi

Wenn Sie alles in/var/log löschen, werden Sie höchstwahrscheinlich in kürzester Zeit Unmengen von Fehlermeldungen erhalten, da dort Ordner vorhanden sind, die voraussichtlich vorhanden sind (z. B. exim4, Apache2, apt, cups, mysql, samba) und mehr). Plus: Es gibt einige Dienste oder Anwendungen, die ihre Protokolldateien nicht erstellen, wenn sie nicht vorhanden sind. Sie erwarten, dass mindestens eine leere Datei vorhanden ist. Die direkte Antwort auf Ihre Frage lautet also "Tun Sie das nicht !!!".

Wie Joschi betont hat, gibt es keinen Grund, dies zu tun. Ich habe Debian-Server, auf denen seit Jahren keine einzige Protokolldatei mehr gelöscht wurde.

17
wolfgangsz

Alle Dateien löschen:

find /var/log -type f -delete

Löschen Sie alle .gz- und gedrehten Dateien

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

Versuchen Sie, den Befehl ohne "-delete" auszuführen, um ihn zu testen.

16
bindbn

Ich klone virtuelle Maschinen von einem Master. Es ist absolut sinnvoll, das Protokoll auf dem Master zu löschen, damit Sie beim Booten der Klone nicht das Protokoll des Masters erhalten. Ich habe in tcsh:

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

dadurch werden die Protokolle gelöscht, die Dateien bleiben jedoch erhalten.

10
Dror

Bereinigen aller Protokolle auf einem Linux-System ohne zu löschen die Dateien:

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

Samba (/var/www/samba) erstellt Protokolldateinamen mit IP-Adressen. Möglicherweise möchten Sie diese löschen:

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done
7
Pedro Lobito

Sie können die Option ctime verwenden, um alte Dateien zu finden ... zum Beispiel:

find -ctime +30

Versuchen Sie, wie bindbn erklärt, zuerst die Find-Fetch-Dateien und anschließend die Option delete: D.

/var/log Hat häufig die Berechtigung drwxrwxr-x Und kann daher nur vom Benutzer geschrieben werden, wenn der Benutzer root ist oder einer privilegierten Gruppe angehört. Das bedeutet, dass neue Protokolldateien nicht von nicht privilegierten Benutzern erstellt werden können.

Anwendungen, die erwarten, dass sie sich an einem Punkt innerhalb von /var/log Anmelden, berühren während der Installationszeit (die häufig mit erhöhten Berechtigungen auftritt) häufig eine Datei, die irgendwo in der Hierarchie /var/log Existiert, und chmod und möglicherweise chown zu diesem Zeitpunkt zu Berechtigungen, die für die nicht privilegierten Benutzer geeignet sind, die die Anwendung verwenden werden.

Apache-Protokolle werden beispielsweise normalerweise von nobody geschrieben, einem Benutzer mit so wenig Berechtigungen wie möglich, damit Apache seine Arbeit erledigen kann, ohne das System einem übermäßigen Risiko auszusetzen. Aber selbst eine einfachere Anwendung erwartet häufig, dass sie in /var/log In eine Protokolldatei schreiben kann.

Was passiert also, wenn die Protokolldatei und der Pfad zur Protokolldatei nicht vorhanden sind? Das liegt ganz bei der Anwendung. Einige Anwendungen überspringen die Protokollierung stillschweigend. Andere werden viele Warnungen erstellen. Und andere werden einfach aussteigen. Es gibt keine feste Regel; Es liegt an der Wachsamkeit des Anwendungsentwicklers sowie daran, wie kritisch der Entwickler seine Protokollierungsfähigkeit beurteilt. Bestenfalls versucht die Anwendung, entweder in eine Protokolldatei an einem Ziel innerhalb von /var/log Zu schreiben oder diese möglicherweise zu erstellen und dann in diese zu schreiben, und kann dies nicht tun, da sie von einem Benutzer ausgeführt wird, der dies nicht tut. Sie haben keine Berechtigungen zum Schreiben in diesen Teil des Dateisystems.

Die kurze Antwort lautet also nein, löschen Sie nicht alles in /var/log - es bricht die Vertragsbenutzer mit ausreichenden Berechtigungen, um solche Dinge mit den Anwendungen zu tun, die auf ihrem System ausgeführt werden, und verursacht einige Geräusche, einige Stiller Fehler beim Protokollieren und ein vollständiger Bruch.

Die entsprechende Aktion besteht darin, logrotate mit den entsprechenden Konfigurationsdateien einzurichten. In der Regel ist die Rotation mit einem Cron-Job verbunden. Die Drehung kann intervallbasiert oder größenbasiert oder beides sein. Es ist sogar möglich, Regeln einzurichten, die eine intervallbasierte Rotation vermeiden, wenn die Protokolldatei nach Ablauf des Intervalls noch leer ist. Das Drehen kann das Versenden von Protokolldateien, das Komprimieren, Löschen, Zerkleinern usw. umfassen.

Der durchschnittliche Benutzer muss sich nicht zu viele Gedanken über die Protokollrotation machen. Entwickler möchten wahrscheinlich sicherstellen, dass für die von ihnen verwendeten Protokolle Rotationsregeln festgelegt wurden. Tatsächlich ist es für Entwickler wahrscheinlich eine gute Art, die Protokollrotation zur Installationszeit für alle softwarespezifischen Protokolle einzurichten, die von der Software erstellt und geschrieben werden.

2
DavidO

Ich habe hier einen einfachen Reiniger implementiert:

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

Es ist einfach:

  • Löscht Dateinamen mit den folgenden logrotierten Dateinamenmustern unter /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (Ohne Berücksichtigung der Groß- und Kleinschreibung)
  • Dateien mit Dateinamen mit den folgenden Protokolldateinamenmustern unter /var/log Abschneiden/leeren.
    • ^.*/.+\.log$ (Ohne Berücksichtigung der Groß- und Kleinschreibung)
1
Buo-Ren Lin