Lösung 1:
Anstatt die Dateien zu löschen, sollten Sie sie drehen, z. g. mit logrotate
.
Man weiß nie, wann man die Protokolle von vor einiger Zeit tatsächlich braucht, also 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.
Lösung 2:
Alle Dateien löschen:
find /var/log -type f -delete
Alle .gz- und gedrehten Dateien löschen
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.
Lösung 3:
Wenn Sie alles in /var/log löschen, werden Sie höchstwahrscheinlich in sehr kurzer Zeit mit Tonnen von Fehlermeldungen enden, da dort Ordner vorhanden sind, von denen erwartet wird, dass sie existieren (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 eigentlich "Tu das nicht!!!" .
Wie Joschi betont hat, gibt es dazu keinen Grund. Ich habe Debian-Server, auf denen seit Jahren keine einzige Protokolldatei gelöscht wurde.
Lösung 4:
Ich klone virtuelle Maschinen von einem Master. Es macht absolut Sinn, das Log auf dem Master zu löschen, damit Sie beim Booten der Clones nicht das Log des Masters bekommen. Ich habe in tcsh:
cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end
die die Protokolle löscht, aber die Dateien behält.
Lösung 5:
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
) Protokolldateinamen mit IP-Adressen erstellt, möchten Sie diese möglicherweise löschen:
for CLEAN in $(find /var/log/samba -type f)
do
rm -rf $CLEAN
done