Mich rief gerade ein Kollege an, der ein Linux System hatte, auf dem sich einige Dienste nicht mehr starten ließen. ein kurzer Blick auf die Platte zeigt, dass diese voll gelaufen war. Dies war somit auch der Grund, warum sich einige Dienste verabschiedet hatten.
Um heraus zu finden, welche Verzeichnisse bzw. Dateien ich mir anschauen sollte um schnell wieder Platz frei zu bekommen halfen mir folgende zwei Befehle
find / -size +100M |xargs ls -laAhfor i in G M K; do du -ah | grep [0-9]$i | sort -nr -k 1; done | head -n 11
Ein Kommentar
Der find-Befehl ist unglücklich gewählt, denn bei Dateien mit Leerzeichen (soll auch mal vorkommen) fährt ls gegen die Wand mit „no such file or directory“ für die jeweiligen Dateinamensteile.
Besser, Du verwendest -print0 für find und xargst passend dazu mit -0:
find / -size +100M -print0 | xargs -0 ls -laAh
Noch ein Punkt zur Verbesserung: Sollte find nichts finden, würde das xargs trotzdem aufgerufen und ls -laAah ohne Dateinamen ausgeführt. Ein -r bei xargs verhindert, dass xargs auch bei leerem STDIN läuft:
find / -size +100M -print0 | xargs -0 -r ls -laAh
Und was die for-Schleife mit dem du angeht:
Du durchläufst auf diese Weise drei Mal den Verzeichnisbaum, was je nach Datenbestand eine Weile dauern kann.
Warum nicht einfach ein
du -sk | sort -nr | head -11
machen und die Ausgabe in kB lesen? Ich habe diese Ausgabe in human readable noch nie gemocht, weil man die einzelnen Werte nicht auf den ersten Blick in Relation zueinander setzen kann.