Warum bewirkt "du" bei WSL eine Verzeichnisgröße, die größer ist als der Arbeitsspeicher der Maschine?
Ich stieß auf meine Frage, als ich versuchte herauszufinden, welche Dateien auf meinem Computer den meisten Speicherplatz belegen. Hier finden Sie die Informationen zum gesamten Arbeitsspeicher der Maschine, die von Windows Subsystem for Linux (WSL) gefunden werden.bash
bballdave025@WORK:~$ df -h /mnt/c Filesystem Size Used Avail Use% Mounted on C: 239G 231G 7.8G 97% /mnt/c
Beachten Sie, dass es bei meiner Frage NICHT darum geht, wie Sie den Platz löschen.
Ich fing an, das Program Files
Verzeichnis zu überprüfen .
bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files/ du: cannot read directory '/mnt/c/Program Files/Microsoft Policy Platform/authorityDb': Permission denied du: cannot read directory '/mnt/c/Program Files/Microsoft SQL Server/130/Shared/ErrorDumps': Permission denied du: cannot read directory '/mnt/c/Program Files/WindowsApps': Permission denied 2.5T /mnt/c/Program Files/
Das Hauptproblem
Meine WSL bash
du
sagt mir, dass, auf meinem Rechner (das hat 239GB
der Speicher,) mein Program Files
Verzeichnis Aufnahme ist 2.5TB des 239GB
verfügbaren Speichers. Es ist, als würde ich zwei Liter Wasser in meinem Mund halten, ohne zu schlucken. (Das ist nur, um das Verhältnis der Größen zu zeigen - mein Problem beinhaltet kein Wasser.)
Ich habe übrigens keine Administratorrechte - nein sudo !!
, um Probleme zu lösen. Ich werde die auslassen Permission denied
Fehler (das wird ohne kommen realen sudo
), wie ich weiterhin diesen Beitrag zu schreiben. Beachten Sie auch, dass ich auf einem Arbeitscomputer bin. Es gibt also Dinge, auf die ich nicht zugreifen kann.
Hauptfrage: Gibt es eine relativ einfache Möglichkeit, die Festplattennutzung in meiner Situation zu überprüfen, dh die Festplattennutzung auf einem Windows- C:
Laufwerk mithilfe des Windows-Subsystems für Linux zu überprüfen ?
Zweitfrage: Was zum Teufel ist hier los? Warum erhalte ich einen Bericht, dass mein Program Files
Verzeichnis zehnmal mehr Speicherplatz beansprucht, als auf meinem Computer vorhanden ist?
Übrigens ... Windows sagt mir, dass Program Files
diese Größe eine Größe 4.83 GB
hat, die ich gefunden habe, indem Sie mit der File Explorer
rechten Maustaste auf den Program Files
Ordner klicken und "Eigenschaften" auswählen.
Meine Lösungsversuche
Mein erster Gedanke war, dass es ein paar symbolische Links oder ein Laufwerks-Mapping für Firmensoftware oder ein Antivirenprogramm oder ähnliches geben könnte, also habe ich die man
Seite nachgesehen du
. Ich habe die folgenden zwei Flaggen gefunden, von denen ich dachte, dass sie helfen könnten.
-P, --no-dereference don't follow any symbolic links (this is the default) -x, --one-file-system skip directories on different file systems
Allerdings du -shP /mnt/c/Program\ Files/
, du -shx /mnt/c/Program\ Files/
und sogar du -shPx /mnt/c/Program\ Files/
gab mir 2.5T
. Was das betrifft, so hat die Option, die sollte Symlinks folgen du -shL
. Es gibt aus 2.5T
. Dasselbe gilt für die anderen Optionen, die ich vielleicht ausprobiert habe, du -shD
und du -shH
gaben dasselbe - 2.5T
für alle.
Mein nächster Gedanke war, dass vielleicht Windows-Verknüpfungen die Dinge durcheinander brachten, also versuchte ich, sie auszuschließen. (Ich weiß nicht, ob dieser Code das Folgen von Verknüpfungen tatsächlich verhindert, aber ich dachte, es wäre einen Versuch wert.) Keine Würfel.
bballdave025@WORK:~$ du -sh --exclude=*.lnk /mnt/c/Program\ Files/ 2.5T /mnt/c/Program Files/
Ich konnte Vorurteile hinter sich lassen und etwas aus dem <shudder> Windows Command Line </shudder>
alten versuchen oder sogar meine alten PowerShell
Fähigkeiten abstauben . Ich schätze, ich könnte sogar die Kugel beißen und zu jedem Verzeichnis in der File Explorer
GUI gehen, auf jeden Ordner klicken, 'Eigenschaften' auswählen, herausfinden, welches Unterverzeichnis den meisten Speicherplatz beansprucht, das Verzeichnis mit dem meisten Speicherverbrauch eingeben und jedes Klicken erneut anklicken ... [Schlafen] ...
... Ich interessiere mich jedoch dafür, warum ich dieses komische Ergebnis bekomme. Wenn ich mir das anschaue Program Files (x86)
, bekomme ich ein Ergebnis, das einem Fußball (nicht-amerikanischen) Fußball in den Mund stopft . (Wieder spreche ich über das Verhältnis der Größen; das Volumen meines Mundes hängt nicht von meinem Problem ab.)
bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files\ \(x86\)/ 11T /mnt/c/Program Files (x86)/
(Windows / File Explorer
meldete eine Größe von 22,8 GB ... nachdem ich 30 Sekunden gewartet hatte.)
Quellen und Versuche
Aus dieser Super User-Antwort kam ich auf die Idee, zu überprüfen, ob meine Situation nicht der Fall war
Die Dateien, die Sie entfernt haben, werden wahrscheinlich noch von einem Prozess geöffnet.
bballdave025@WORK:~$ lsof -a +L1 /mnt/c/Program\ Files/ bballdave025@WORK:~$
Da es keine Ausgabe gab, gehe ich davon aus, dass keine Dateien, die ich entfernt habe, noch von einem Prozess geöffnet werden.
Ich habe mir auch diese Frage angesehen und Antworten zu unterschiedlichen du
Ergebnissen unter Linux und Cygwin gegeben. Die in dieser Frage beschriebenen Größenunterschiede waren jedoch winzig, daher glaube ich nicht, dass das Problem ähnlich ist. Ich bin mir zwar sicher
Es ist daher keine Überraschung, dass dieselbe Dateigruppe unterschiedliche Festplattengrößen verwendet, wenn sie in unterschiedlichen Dateisystemen gespeichert sind.
Ich kann denken, dass es eine Überraschung für den gleichen Satz von Dateien zu bedienen jede unterschiedliche Festplattengröße, wenn sie wirklich an einem Ort gespeichert sind, auch wenn es unterschiedliche zugrunde liegende Möglichkeiten, um sie zu öffnen.
Nächste Schritte
Ich beschloss, einen Ordner auf meiner C:
Festplatte zu erstellen, eine kleine Datei einzufügen und zu überprüfen, ob die Dateigröße wie erwartet war.
bballdave025@WORK:~$ mkdir -p /mnt/c/Users/bballdave025/little_guy bballdave025@WORK:~$ echo "This should make a small file." > /mnt/c/Users/bballdave025/little_guy/small_file.txt bballdave025@WORK:~$ du -sh /mnt/c/Users/bballdave025/little_guy/small_file.txt 17K /mnt/c/Users/bballdave025/little_guy/small_file.txt bballdave025@WORK:~$ du -shPx /mnt/c/Users/bballdave025/little_guy/ 17K /mnt/c/Users/bballdve025/little_guy/
17KB scheint für die kleine Textdatei groß zu sein. Wenn wir ein Byte pro Zeichen haben, würden wir 31 Byte erhalten. Ich weiß nicht, ob diese Übung - eine Textdatei zu erstellen und zu prüfen du
- die Frage beantworten wird, aber es war Teil meiner Bemühungen.
Ich stecke fest. Ich möchte wirklich keine Ordner durchklicken. Ich möchte auch wissen, warum ich dieses komische Verhalten bekomme. Irgendwelche Ideen?
Systemdetails
bballdave025@WORK:~$ uname -a | head -n 1 Linux WORK 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux bballdave025@WORK:~$ bash --version | head -n 1 GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu) bballdave025@WORK:~$ systeminfo.exe | sed -n 's/^OS\ *//p' Unable to translate current working directory. Using C:\Windows\System32 Name: Microsoft Windows 10 Enterprise Version: 10.0.15063 N/A Build 15063 Manufacturer: Microsoft Corporation Configuration: Member Workstation Build Type: Multiprocessor Free
0 Antworten auf die Frage
Verwandte Probleme
-
12
Warum wird der Ordner / winsxs so groß und kann er verkleinert werden?
-
2
Erhöhte Berechtigungen für Startanwendungen in Windows?
-
14
PDF Viewer unter Windows
-
7
Welche Windows-Dienste kann ich sicher deaktivieren?
-
8
Firefox PDF-Plugin zum Anzeigen von PDF-Dateien im Browser unter Windows
-
1
Windows verliert das Bildschirmlayout
-
1
Gibt es eine Möglichkeit, Installationen / Updates zu verhindern, die meine Festplatte mit kryptisch...
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
6
Log Viewer unter Windows
-
3
Windows-Hintergrundproblem mit zwei Bildschirmen