Frage Lösche alle / var / log?


Kann ich alles löschen? /var/log? Oder soll ich nur Dateien (rekursiv) löschen in /var/log aber Ordner hinterlassen?

Hat jemand eine gute? rm Befehlszeile? (Meine Admin-Fähigkeiten lassen mich nervös.)

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


25
2017-09-28 03:17


Ursprung


Löschen von Protokolldateien ist eine schlechte Idee (Sie müssen auch jeden laufenden Prozess finden, der eine eigene Protokolldatei hat und "kill -HUP", ein weicher Neustart, der dazu führt, dass das Programm alle notwendigen Protokolldateien neu erstellt). Ich rate dringend davon ab, Log-Dateien zu löschen, verlassen Sie sich auf Dienstprogramme wie logrotate, um automatisch den Inhalt von / var / log für Sie zu verwalten (es tut Sachen wie HUP die Prozesse) Wenn ich das aus einem anderen Blickwinkel angehen möchte. Welches Problem lösen Sie, das hat Sie dazu veranlasst, dies zu berücksichtigen? - Twirrim


Antworten:


Anstatt die Dateien zu löschen, sollten Sie sie drehen, e. G. verwenden logrotate.

Sie wissen nie, wann Sie die Protokolle von vor einiger Zeit benötigen, also ist es besser, sie zu archivieren (bis zu einem vernünftigen Alter, z. B. 3 Monate).

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


21
2017-09-28 06:49



logrotate kann auch die ältesten Dateien löschen. - Kevin M
Nun, IMHO Löschen aller Protokolle kann in einigen Fällen vollkommen sinnvoll sein. Ich möchte zum Beispiel ein Virtual Machine-Image erstellen, das für neue Bereitstellungen verwendet werden soll. Unnötig zu sagen, ich möchte, dass es ein wirklich sauberes System ohne irgendwelche gespeicherten Protokolle, Historien, Caches usw. ist. - Ivan
Entschuldigung, aber drei Monate alte Logdateien zu betrachten, ist Archäologie. Wenn Sie Protokolle sammeln, um Probleme zu identifizieren, dann bewerten Sie diese schnell. - countermode
@countermode Du hast nie Lust auf Nostalgie? Wie wenn man die 3 Monate alten Log-Dateien betrachtet und an gute alte Zeiten denkt? - Broco
OK, ich sehe den Befehl. Wie man es benutzt? Mann Logrotate sagt, verwenden Sie es in Cron. Ich nehme an mit der Option -f? - SDsolar


Wenn du alles in / var / log löschst, wirst du höchstwahrscheinlich in kürzester Zeit mit einer Unmenge von Fehlermeldungen enden, da dort Ordner vorhanden sind, die wahrscheinlich existieren (zB exim4, apache2, apt, cups, mysql, samba) und mehr). Außerdem gibt es einige Dienste oder Anwendungen, die ihre Protokolldateien nicht erstellen, wenn sie nicht vorhanden sind. Sie erwarten mindestens eine leere Datei vorhanden sein. Also ist die direkte Antwort auf Ihre Frage tatsächlich "Mach das nicht!!!".

Wie Joschi betont hat, gibt es keinen Grund, dies zu tun. Ich habe Debian-Server laufen, die nicht eine einzige Log-Datei in Jahren gelöscht haben.


16
2017-09-28 11:05



Ich habe das nicht bemerkt. gut zu wissen. +1 + änderte mein Akzeptieren.
Ich habe das gerade getan. Wunsch! Ich hatte diese Antwort schon früher gelesen - VarunAgw
Es gibt gültige Gründe, Protokolldateien zu entfernen, IMHO. Sie exportieren beispielsweise eine virtuelle Maschine für andere Benutzer, möchten jedoch nicht, dass das Abbild der virtuellen Maschine Details zu allem enthält, was vor dem Export passiert ist. - a3nm


Lösche alle Dateien:

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 es zu testen.


13
2017-09-28 03:49



Ich fand das nützlich, um die Protokolldateien einer Vagrant-Box vor dem Verpacken zu löschen. - Rudolf Vavruch


Ich klicke virtuelle Maschinen von einem Master. Es ist absolut sinnvoll, das Protokoll des Masters zu löschen, damit beim Booten der Klone das Protokoll des Masters nicht angezeigt wird. Ich habe in Tcsh getan:

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

Das löscht die Protokolle, behält aber die Dateien.


10
2017-11-09 09:43



Dies sollte auf einen Anwendungsfall beschränkt sein, den Sie beschreiben. - Sven♦
In bash: find / var / log / -type f -exec cp / dev / null {} \; - gerard


Alle Protokolle auf einem Linux-System bereinigen 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 Log-Dateinamen mit IP-Adressen, die Sie möglicherweise löschen möchten:

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

5
2017-08-19 15:04



Nützliches Skript. - Anmol Singh Jaggi
Du könntest tauschen cp /dev/null $CLEAN durch > $CLEAN. - ThoriumBR


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

find -ctime +30

Wie bei bindbn erklärt, probiere zuerst die find fetch Dateien aus und benutze danach die Option delete: D


2
2017-09-28 03:51





Ich habe hier einen einfachen Reiniger implementiert:

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

Es einfach:

  • Löscht Dateinamen mit den folgenden lotrotierten Dateinamenmustern unter /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (Groß- / Kleinschreibung nicht beachten)
  • Truncate / Empty Dateien mit Dateinamen mit den folgenden Protokoll Dateinamen Mustern unter /var/log
    • ^.*/.+\.log$ (Groß- / Kleinschreibung nicht beachten)

1
2017-10-05 20:30





/var/log hat oft Berechtigungen von drwxrwxr-xDaher ist der Benutzer nicht schreibbar, es sei denn, der Benutzer ist root oder gehört einer privilegierten Gruppe an. Das bedeutet, dass neue Protokolldateien nicht von nicht privilegierten Benutzern erstellt werden können.

Anwendungen, die innerhalb von /var/log wird oft eine Datei irgendwo in der Existenz berühren /var/log Hierarchie während der Installationszeit (die oft mit erhöhten Rechten auftritt) und wird chmod und möglicherweise chown es zu dieser Zeit zu Berechtigungen, die für die nichtprivilegierten Benutzer geeignet sind, die die Anwendung verwenden werden.

Apache-Logs zum Beispiel werden normalerweise von geschrieben nobody, der ein Benutzer mit so wenig Berechtigungen wie möglich für Apache ist, um seine Arbeit zu erledigen, ohne das System einem übermäßigen Risiko auszusetzen. Aber selbst eine eher gewöhnliche Anwendung erwartet oft, dass sie in der Lage ist, in eine Logdatei zu schreiben /var/log.

Was passiert also, wenn die Logdatei und der Pfad zur Logdatei nicht existieren? Das hängt ganz von der Anwendung ab. Einige Anwendungen überspringen die Protokollierung in aller Stille. Andere werden eine Menge Warnungen erzeugen. Und andere werden einfach retten. Es gibt keine Hard-Fast-Regel; Es hängt von der Wachsamkeit des Anwendungsentwicklers ab und davon, wie wichtig der Entwickler für seine Protokollierung ist. Im besten Fall wird die Anwendung versuchen, entweder zu schreiben oder möglicherweise zu erstellen und dann in eine Protokolldatei an einem Ziel innerhalb zu schreiben /var/log, und wird nicht in der Lage sein, dies zu tun, da es von einem Benutzer ausgeführt wird, der keine Rechte hat, in diesen Teil des Dateisystems zu schreiben.

Also die kurze Antwort ist nein, lösche nicht alles in /var/log - Es bricht die Vertragsbenutzer mit ausreichenden Privilegien, um solche Dinge mit den Anwendungen zu machen, die auf ihrem System laufen, und wird etwas Rauschen, einige stille Fehler beim Loggen und einige durchgehende Brüche verursachen.

Die geeignete Maßnahme ist die Einrichtung logrotate mit entsprechenden Konfigurationsdateien. Normalerweise wird die Rotation einem Cron-Job zugeordnet. Die Rotation kann intervallbasiert oder größenbasiert oder beides sein. Es ist sogar möglich, Regeln zu erstellen, die eine intervallbasierte Rotation vermeiden, wenn die Protokolldatei nach Ablauf des Intervalls noch leer ist. Die Rotation kann das Versenden von Logfiles, Komprimierung, Löschung, Shredding usw. umfassen.

Der durchschnittliche Benutzer müsste sich nicht um die Protokollrotation kümmern. Entwickler möchten wahrscheinlich sicherstellen, dass für die verwendeten Protokolle Rotationsregeln festgelegt sind. Tatsächlich ist es wahrscheinlich gute Manieren seitens der Entwickler, die Protokollrotation zum Zeitpunkt der Installation für alle softwarespezifischen Protokolle einzurichten, die von der Software erstellt und geschrieben werden.


1
2018-06-16 14:20





function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

Machen Sie ein ausführbares Skript und versuchen Sie es als root auszuführen, wenn sudo nicht für Sie arbeitet


-2
2018-01-24 04:20