Bei der Verwaltung von Linux-Systemen fällt es mir oft schwer, den Schuldigen aufzuspüren, nachdem eine Partition voll ist. Ich verwende normalerweise, du / | sort -nr
aber auf einem großen Dateisystem dauert es lange, bis Ergebnisse zurückgegeben werden.
Auch dies ist normalerweise erfolgreich bei der Hervorhebung des schlimmsten Täters, aber ich habe oft auf das zurückgegriffen, du
ohne dass dies sort
in subtileren Fällen der Fall war, und musste dann die Ausgabe durchforsten.
Ich würde eine Befehlszeilenlösung bevorzugen, die sich auf Standard-Linux-Befehle stützt, da ich einige Systeme verwalten muss und die Installation neuer Software mühsam ist (insbesondere, wenn nicht genügend Speicherplatz vorhanden ist!).
command-line
partition
disk-usage
command
Stephen Kitt
quelle
quelle
Antworten:
Versuchen Sie es
ncdu
mit einem hervorragenden Befehlszeilen-Datenträgernutzungsanalysator:quelle
sudo apt install ncdu
auf Ubuntu bekommt es leicht. Es ist großartigncdu -x
nur Dateien und Verzeichnisse auf demselben Dateisystem wie das gescannte Verzeichnis zählen.sudo ncdu -rx /
sollte NUR auf Root-Laufwerken mit den größten Verzeichnissen / Dateien einen sauberen Lesevorgang durchführen. (-r
= schreibgeschützt,-x
= auf demselben Dateisystem bleiben (dh keine anderen Dateisystem-Mounts durchlaufen))Gehen Sie nicht direkt zu
du /
. Verwenden Siedf
die Partition zu finden , die Sie weh, und dann versuchen ,du
Befehle.Eine, die ich gerne probiere, ist
weil es Größen in "lesbarer Form" druckt. Wenn Sie keine wirklich kleinen Partitionen haben, ist das Greifen nach Verzeichnissen in Gigabyte ein ziemlich guter Filter für das, was Sie wollen. Dies wird einige Zeit in Anspruch nehmen, aber wenn Sie keine Quoten festgelegt haben, ist es meiner Meinung nach genau so.
Wie @jchavannes in den Kommentaren ausführt, kann der Ausdruck präziser werden, wenn Sie zu viele falsche Positive finden. Ich habe den Vorschlag übernommen, der es besser macht, aber es gibt immer noch falsche Positive, so dass es nur Kompromisse gibt (einfacher Ausdruck, schlechtere Ergebnisse; komplexer und länger Ausdruck, bessere Ergebnisse). Wenn in Ihrer Ausgabe zu viele kleine Verzeichnisse angezeigt werden, passen Sie Ihren regulären Ausdruck entsprechend an. Zum Beispiel,
ist noch genauer (es werden keine <1GB Verzeichnisse aufgelistet).
Wenn Sie tun Quoten haben, können Sie
um Benutzer zu finden, die die Festplatte blockieren.
quelle
grep '[0-9]G'
enthielt viele falsch-positive und auch keine Dezimalstellen. Das hat für mich besser funktioniert:sudo du -h / | grep -P '^[0-9\.]+G'
[GT]
statt nurG
du -h | sort -hr | head
Verwenden Sie für einen ersten Blick die Übersichtsansicht von
du
:Der Effekt besteht darin, die Größe jedes seiner Argumente zu drucken, dh jeden Stammordner im obigen Fall.
Außerdem können sowohl GNU
du
als auch BSDdu
in der Tiefe eingeschränkt sein ( POSIXdu
jedoch nicht! ):GNU (Linux,…):
BSD (macOS,…):
Dadurch wird die Ausgabeanzeige auf Tiefe 3 begrenzt. Die berechnete und angezeigte Größe ist natürlich immer noch die Gesamtsumme der vollen Tiefe. Trotzdem beschleunigt die Einschränkung der Anzeigetiefe die Berechnung drastisch.
Eine weitere hilfreiche Option ist
-h
(Wörter sowohl auf GNU als auch auf BSD, aber auch nicht nur auf POSIXdu
) für eine "lesbare" Ausgabe (dh unter Verwendung von KiB, MiB usw. ).quelle
du
beschweren,-d
versuchen Sie es--max-depth 5
stattdessen.du -hcd 1 /directory
. -h für lesbar, c für gesamt und d für tiefe.du -hd 1 <folder to inspect> | sort -hr | head
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | head
um zu filtern Erlaubnis verweigertSie können auch den folgenden Befehl ausführen
du
:-s
Option fasst die Summe für jedes Argument zusammen und zeigt sie an.h
druckt Mio, Gio usw.x
= in einem Dateisystem bleiben (sehr nützlich).P
= Verfolge keine Symlinks (was dazu führen kann, dass Dateien zum Beispiel zweimal gezählt werden).Seien Sie vorsichtig, das
/root
Verzeichnis wird nicht angezeigt, Sie müssen es ausführen~# du -Pshx /root 2>/dev/null
, um es zu erhalten/root
.Bearbeiten: Korrigierte Option -P
quelle
du -Pshx .* * 2>/dev/null
+ versteckte / System-VerzeichnisseDas Finden der größten Dateien im Dateisystem wird immer viel Zeit in Anspruch nehmen. Per Definition müssen Sie das gesamte Dateisystem nach großen Dateien durchsuchen. Die einzige Lösung ist wahrscheinlich, einen Cron-Job auf allen Ihren Systemen auszuführen, um die Datei im Voraus bereit zu haben.
Eine andere Sache, die x-Option von du, ist nützlich, um du davon abzuhalten, Mount-Punkten in andere Dateisysteme zu folgen. Dh:
Der vollständige Befehl, den ich normalerweise ausführe, lautet:
Das
-m
bedeutet, dass die Ergebnisse in Megabyte zurückgegeben werden undsort -rn
die größte Zahl der Ergebnisse zuerst sortiert wird. Anschließend können Sie die Datei usage.txt in einem Editor öffnen. Die größten Ordner (beginnend mit /) befinden sich oben.quelle
-x
Flagge!ncdu
du
find
sudo du -xm / | sort -rn > ~/usage.txt
Ich benutze immer
du -sm * | sort -n
, was Ihnen eine sortierte Liste gibt, wie viel die Unterverzeichnisse des aktuellen Arbeitsverzeichnisses in Mebibyte verbrauchen.Sie können auch Konqueror ausprobieren, das über einen "Größenansichts" -Modus verfügt, der dem von WinDirStat unter Windows ähnelt: Er gibt Ihnen einen Überblick darüber, welche Dateien / Verzeichnisse den größten Teil Ihres Speicherplatzes belegen.
Update: In neueren Versionen können Sie auch verwenden
du -sh * | sort -h
, um lesbare Dateigrößen anzuzeigen und nach diesen zu sortieren. (Zahlen werden mit K, M, G, ... angefügt)Wenn Sie nach einer Alternative zu KDE3s Konqueror-Dateigrößenansicht suchen, sehen Sie sich vielleicht filelight an, obwohl es nicht ganz so schön ist.
quelle
Ich benutze dies für die 25 schlimmsten Täter unterhalb des aktuellen Verzeichnisses
quelle
-h
, wird sich wahrscheinlich die Wirkung dessort -nr
Befehls ändern - was bedeutet, dass die Sortierung nicht mehr funktioniert und derhead
Befehl dann auch nicht mehr funktioniertBei einer früheren Firma hatten wir einen Cron-Job, der über Nacht ausgeführt wurde und alle Dateien über eine bestimmte Größe identifizierte, z
find / -size + 10000k
Möglicherweise möchten Sie die Verzeichnisse, in denen Sie suchen, genauer auswählen und auf remote bereitgestellte Laufwerke achten, die möglicherweise offline geschaltet werden.
quelle
-x
Sie sicherstellen, dass Sie keine Dateien auf anderen Geräten als dem Startpunkt Ihres Suchbefehls finden. Dies behebt das Problem mit remote gemounteten Laufwerken.Eine Möglichkeit wäre, den Befehl du / sort als Cron-Job auszuführen und in eine Datei auszugeben, damit er bei Bedarf bereits vorhanden ist.
quelle
Für die Kommandozeile halte ich die du / sort-Methode für die beste. Wenn Sie nicht auf einem Server sind, sollten Sie sich Baobab - Disk usage analyzer ansehen . Die Ausführung dieses Programms nimmt ebenfalls einige Zeit in Anspruch, aber Sie können das Unterverzeichnis leicht finden, wo sich alle alten Linux-ISOs befinden.
quelle
ich benutze
und ich ändere die maximale Tiefe, um sie meinen Bedürfnissen anzupassen. Mit der Option "c" werden die Gesamtsummen für die Ordner gedruckt, und mit der Option "h" werden die Größen in K, M oder G entsprechend gedruckt. Wie bereits erwähnt, werden weiterhin alle Verzeichnisse durchsucht, die Ausgabe wird jedoch so eingeschränkt, dass die großen Verzeichnisse leichter zu finden sind.
quelle
Ich werde Zweiter
xdiskusage
. Aber ich werde in dem Hinweis hinzufügen, dass es sich tatsächlich um ein du-Frontend handelt und die du-Ausgabe aus einer Datei lesen kann. So können Siedu -ax /home > ~/home-du
auf Ihrem Serverscp
die Datei zurück ausführen und sie anschließend grafisch analysieren. Oder leiten Sie es durch ssh.quelle
Versuchen Sie, die Ausgabe von du in ein einfaches awk-Skript einzugeben, das überprüft, ob die Größe des Verzeichnisses einen bestimmten Schwellenwert überschreitet. Wenn dies der Fall ist, wird es gedruckt. Sie müssen nicht warten, bis der gesamte Baum durchlaufen wurde, bevor Sie Informationen abrufen (im Gegensatz zu vielen anderen Antworten).
Im Folgenden werden beispielsweise alle Verzeichnisse angezeigt, die mehr als 500 MB belegen.
Um die Wiederverwendbarkeit zu verbessern, können Sie eine Funktion in Ihrem .bashrc definieren (oder es in ein eigenständiges Skript umwandeln).
So
dubig 200 ~/
sucht man unter dem Homeverzeichnis (ohne Symlinks vom Gerät zu folgen) nach Verzeichnissen, die mehr als 200 MB belegen.quelle
du -k
wird es absolut sicher machen, dass du KB-Einheiten benutztdu -kx $2 | awk '$1>'$(($1*1024))
(Wenn Sie nur eine Bedingung oder ein Muster für awk angeben, lautet die Standardaktionprint $0
)du -kx / | awk '$1 > 500000'
du -kx / | tee /tmp/du.log | awk '$1 > 500000'
. Dies ist sehr hilfreich, da Sie, wenn sich herausstellt, dass Ihre erste Filterung erfolglos ist, andere Werte wie diesen ausprobierenawk '$1 > 200000' /tmp/du.log
oder die gesamte Ausgabe auf diese Weise überprüfen können,sort -nr /tmp/du.log|less
ohne das gesamte Dateisystem erneut zu scannenIch mag den guten alten xdiskusage als grafische Alternative zu du (1).
quelle
Ich bevorzuge Folgendes, um mir einen Überblick zu verschaffen und von dort aus einen Drilldown durchzuführen ...
Hiermit werden Ergebnisse mit lesbarer Ausgabe wie GB, MB angezeigt. Es verhindert auch das Durchlaufen von entfernten Dateisystemen. Die
-s
Option zeigt nur eine Zusammenfassung der gefundenen Ordner an, sodass Sie bei Interesse an weiteren Details eines Ordners einen Drilldown durchführen können. Beachten Sie, dass in dieser Lösung nur Ordner angezeigt werden und Sie daher das / nach dem Sternchen weglassen möchten, wenn Sie auch Dateien möchten.quelle
Hier nicht erwähnt, aber Sie sollten auch lsof im Falle von gelöschten / hängenden Dateien überprüfen. Ich hatte eine 5,9 GB gelöschte tmp-Datei von einem weggelaufenen Cronjob.
https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage Hat mir geholfen, den Prozessbesitzer dieser Datei (cron) zu finden, und dann konnte ich
/proc/{cron id}/fd/{file handle #}
die Datei in weniger bekommen Frage, um den Anfang des Laufs zu machen, löse das Problem und "" sende ein Echo, um Speicherplatz freizugeben und cron sich anmutig schließen zu lassen.quelle
Über das Terminal erhalten Sie eine visuelle Darstellung der Festplattennutzung mit dutree
Es ist sehr schnell und leicht, da es in Rust implementiert ist
Alle Einzelheiten zur Verwendung finden Sie auf der Website
quelle
Für die Kommandozeile scheint du (und seine Optionen) der beste Weg zu sein. DiskHog verwendet anscheinend auch du / df-Informationen aus einem Cron-Job, sodass Peters Vorschlag wahrscheinlich die beste Kombination aus einfach und effektiv ist.
( FileLight und KDirStat sind ideal für die grafische Benutzeroberfläche .)
quelle
Sie können Standardwerkzeuge wie
find
und verwendensort
, um Ihre Speicherplatznutzung zu analysieren.Listen Sie die Verzeichnisse nach ihrer Größe sortiert auf:
Liste Dateien sortiert nach ihrer Größe:
quelle
Vielleicht ist zu beachten, dass
mc
(Midnight Commander, ein klassischer Textmodus-Dateimanager) standardmäßig nur die Größe der Verzeichnis-Inodes anzeigt (normalerweise4096
), aber mit CtrlSpaceoder mit dem Menü Extras können Sie den vom ausgewählten Verzeichnis belegten Speicherplatz in einer für Menschen lesbaren Form anzeigen Format (zB einige mögen103151M
).Zum Beispiel zeigt das Bild unten die volle Größe der Vanille TeX Live-Distributionen von 2018 und 2017, während die Versionen von 2015 und 2016 nur die Größe der Inode zeigen (aber sie haben wirklich in der Nähe von jeweils 5 GB).
Das heißt, es CtrlSpacemuss eins nach dem anderen durchgeführt werden, nur für die aktuelle Verzeichnisebene, aber es ist so schnell und praktisch, wenn Sie damit navigieren,
mc
dass Sie es möglicherweise nicht benötigenncdu
(das ist in der Tat nur für diesen Zweck besser). Sie können aber auch laufenncdu
ausmc
. ohne zu beendenmc
oder ein anderes Terminal zu starten.quelle
Zuerst überprüfe ich die Größe der Verzeichnisse wie folgt:
quelle
Wenn Sie wissen, dass die großen Dateien in den letzten Tagen hinzugefügt wurden (z. B. 3), können Sie einen Suchbefehl in Verbindung mit "
ls -ltra
" verwenden, um die kürzlich hinzugefügten Dateien zu ermitteln:Dadurch erhalten Sie nur die Dateien ("
-type f
"), keine Verzeichnisse. nur die Dateien mit Änderungszeit in den letzten 3 Tagen ("-mtime -3
") und "ls -lart
" für jede gefundene Datei ("-exec
" Teil) ausführen .quelle
Um zu verstehen, wie viel Speicherplatz überproportional belegt ist, ist es oft nützlich, im Stammverzeichnis zu beginnen und einige der größten untergeordneten Elemente zu durchsuchen.
Wir können dies tun, indem wir
Das ist:
Sagen wir jetzt, / usr erscheint zu groß
Jetzt, wenn / usr / local verdächtig groß ist
und so weiter...
quelle
Ich habe diesen Befehl verwendet, um Dateien zu finden, die größer als 100 MB sind:
quelle
Ich hatte Erfolg darin, die schlimmsten Täter aufzuspüren, die die
du
Ausgabe in lesbarer Formegrep
an einen regulären Ausdruck weitergaben und mit diesem übereinstimmten.Zum Beispiel:
das sollte dir alles 500 megs oder mehr zurückgeben.
quelle
du -k | awk '$1 > 500000'
. Es ist viel einfacher zu verstehen, zu bearbeiten und beim ersten Versuch richtig zu werden.Wenn Sie Geschwindigkeit wünschen, können Sie Kontingente für die zu überwachenden Dateisysteme aktivieren (Sie müssen keine Kontingente für einen Benutzer festlegen) und ein Skript verwenden, das mit dem Befehl quota den von jedem Benutzer verwendeten Speicherplatz auflistet. Zum Beispiel:
würde Ihnen die Festplattennutzung in Blöcken für den bestimmten Benutzer auf dem bestimmten Dateisystem geben. Auf diese Weise sollten Sie in der Lage sein, Verwendungen in Sekundenschnelle zu überprüfen.
Um Quoten zu aktivieren, müssen Sie usrquota zu den Dateisystemoptionen in Ihrer / etc / fstab-Datei hinzufügen und dann wahrscheinlich neu starten, damit quotacheck auf einem inaktiven Dateisystem ausgeführt werden kann, bevor quotaon aufgerufen wird.
quelle
Hier ist eine winzige App, die mithilfe von Deep Sampling nach Tumoren auf einer Festplatte oder in einem Verzeichnis sucht. Der Verzeichnisbaum wird zweimal durchlaufen, einmal, um ihn zu messen, und das zweite Mal, um die Pfade zu 20 "zufälligen" Bytes unter dem Verzeichnis auszudrucken.
Die Ausgabe für mein Programmverzeichnis sieht folgendermaßen aus:
Es sagt mir, dass das Verzeichnis 7,9 GB ist, von denen
Es ist einfach genug zu fragen, ob eines davon entladen werden kann.
Außerdem werden Dateitypen beschrieben, die über das Dateisystem verteilt sind, zusammengenommen jedoch eine Möglichkeit zur Platzersparnis darstellen:
Es zeigt auch viele andere Dinge, auf die ich wahrscheinlich verzichten könnte, wie die Unterstützung von "SmartDevices" und "ce" (~ 15%).
Es dauert zwar linear, muss aber nicht oft durchgeführt werden.
Beispiele für Dinge, die es gefunden hat:
quelle
Ich hatte ein ähnliches Problem, aber die Antworten auf dieser Seite reichten nicht aus. Ich fand den folgenden Befehl am nützlichsten für die Auflistung:
du -a / | sort -n -r | head -n 20
Welches würde mir die 20 größten Übeltäter zeigen. Obwohl ich dies ausgeführt habe, wurde mir das eigentliche Problem nicht angezeigt, da ich die Datei bereits gelöscht hatte. Der Haken war, dass es noch einen Prozess gab, der auf die gelöschte Protokolldatei verwies ... also musste ich diesen Prozess zuerst beenden, dann wurde der Speicherplatz als frei angezeigt.
quelle
Sie können DiskReport.net verwenden , um einen Online- Webbericht aller Ihrer Festplatten zu erstellen.
Bei vielen Läufen wird ein Verlaufsdiagramm für alle Ordner angezeigt, mit dem Sie leicht feststellen können, was gewachsen ist
quelle
Es gibt eine schöne plattformübergreifende Freeware namens JDiskReport, die eine grafische Benutzeroberfläche enthält, um herauszufinden , was den gesamten Speicherplatz einnimmt .
Beispiel-Screenshot:
Natürlich müssen Sie ein wenig Speicherplatz manuell freimachen, bevor Sie ihn herunterladen und installieren oder auf ein anderes Laufwerk (z. B. einen USB-Stick) herunterladen können.
(Hierher kopiert von der Antwort desselben Autors auf eine doppelte Frage)
quelle