[LinuxOB] Suche nach grossen Dateien
Daniel Dombrowski
daniel.dombrowski at linuxob.de
Mo Feb 16 19:55:41 CET 2004
On 2004.02.16 11:42, Michael Gisbers wrote:
> Hallo miteinander,
>
> auf der Gentoo - Mailinglist kam in den letzten Tagen ein schöner
> Einzeiler zum Thema 'Welche Dateien schlucken bei mir den Platz?'
>
> find / -mount -type f -print0 2>/dev/null | xargs -0 ls -l | \
> sort -n -k 5 -r |head
>
> (Wie geschrieben ein Einzeiler, also das \ weg und den Rest direkt
> daran.)
>
> hiermit wird über den find - Befehl eine Suche nach allen Dateien im
> aktuellen Dateisystem durchgeführt.
>
> Der Parameter '-mount' sorgt dafür, daß nur der aktuelle Mountpoint
> und nicht weitere gemountete z. B. CD/DVD-Rom - Laufwerke oder NFS -
> Shares durchsucht werden.
>
> Wenn /usr, /home etc. einzelne mounts sind müßt Ihr selber
> entscheiden, ob Ihr das '-mount' weglaßt oder für jeden Mountpoint
> das '/' gegen den jeweiligen Mountpoint austauscht.
>
> Die restlichen Befehle sorgen dann dafür, daß der Dateiname mit Größe
> ausgegeben wird und die daraus entstehenden Daten dann absteigend
> nach Größe sortiert werden.
>
> Der Befehl 'head' am Ende sorgt dann für die Ausgabe der ersten 10
> Einträge und damit der 10 größten Dateien. Wenn Ihr mehr sehen wollt
> könnt Ihr hinter head noch den Parameter '-n' gefolgt von einer Zahl
> z. B. '-n 20' angeben um, wie im Beispiel, die 20 größten Dateien
> anzeigen zu lassen.
>
> Wenn jemand ähnliche nette Einzeiler kennt schickt sie doch mal bitte
> in die Liste ;-)
Also Christian und ich haben mal versucht, bestimte Problemstellungen
so kurz wie möglich umzusetzen, was eigendlich auch in Einzeilern
resultierte. U.a., ping so abzurichten, dass es bei jedem Pong einen
Beep gab und trotzdem die normale Ausgabe des Pings zu lesen war.
Ergebnis war dann irgendwas mit ping host | sed ...
Weiterhin habe ich noch einen Einzeiler, der aus einem Apache-Error-Log
die Timestamps entfernt, die Zeilen sortiert und Duplikate entfernt:
cat error.log | sed -e 's/\[.*\] //g' | sort | perl -e 'while($line =
<>) { print $line if $line ne $lastline; $lastline = $line}'
Ich hatte auch mal einen Einzeiler, der etliche Prozesse "von sich
selbst" erstellt hatte und dann RAM gefressen hat, allerdings habe ich
den wohl irgendwann mal weggeräumt. Sinn dieses Einzeilers war, eine
Lastsimulation auf einem Rechner, der sich unter Last gerne mal
rebootete zu simulieren.
Meine Einzeiler fangen meistens mit perl -e an und dann wird es
manchmal auch etwas mehr, aber da kein Zeilenumbruch drin vorkommt, ist
es halt ein Einzeiler. :)
Gruss
Daniel
Mehr Informationen über die Mailingliste linux