Warum werden bei den Befehlen "df" und "du" unterschiedliche Datenträgerverwendungen angezeigt?


26

Ich kann auf meinem PC nicht auf das Ubuntu-System zugreifen. Die Fehlermeldung lautet : " Das System läuft im Low-Graphics-Modus ", und ich habe einige Befehle aus dem Internet ausprobiert.

Ich habe herausgefunden, dass anscheinend kein Speicherplatz verfügbar ist. Ich habe " df " und " du " -Befehle verwendet, um zu überprüfen, die Ergebnisse lauten wie folgt:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

und

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

Wie würde ich das System bereinigen, um mehr Speicherplatz zu erhalten?


Die Frage im Titel und am Ende des Fragenkörpers ist ganz anders. Einige Antworten beziehen sich auf eine Frage, andere auf die andere. Sie sollten Ihre tatsächlichen Bedürfnisse klären und möglicherweise auch eine Antwort akzeptieren .
Melebius

Antworten:


50

Sie wissen höchstwahrscheinlich, dass Sie eine Datei entfernen können, die noch von einer Anwendung verwendet wird, und für diese Anwendung bleibt sie verfügbar. Das liegt daran, dass der Dateideskriptor in / proc / filesystem offen gehalten wird.

Wenn es also solche offenen Deskriptoren für Dateien gibt, die bereits entfernt wurden, wird der von ihnen belegte Speicherplatz als von df(und dfrichtig) betrachtet. Sie können jedoch nicht berücksichtigt werden du, da ihnen keine Dateinamen mehr zugeordnet sind.

Sie können alle nicht verknüpften, aber geöffneten Dateien finden mit:

# lsof | grep '(deleted)'

7
Das hat mich gerettet. Ich hatte keine Ahnung, warum meine Festplatte voll war, aber du sagtest, sie sei leer. Ein offenes Dateihandle für eine 8-GB-Datei
Cheyne

5
Wie kann ich die Links löschen?
Vikas Hardia

1
Manchmal müssen Sie dies als root ausführen, um zu sehen, dass gelöschte Dateien von Prozessen anderer Benutzer geöffnet werden.
Envek

1
Die Hauptursache dafür war für mich eine falsche Protokolldateispezifikation in einer meiner /etc/logrotate.dDateien. Dem fehlerhaften Eintrag fehlte eine Postrotationsroutine, die dazu führte, dass mein Daemon-Prozess seine gedrehten / gelöschten Dateien nicht losließ.
Dale Anderson

Wie kann ich diese nicht verknüpften, aber geöffneten Dateien entfernen?
zx1986

14

Wie kann ich die Links löschen? - Vikas Hardia 22. August 14 um 5:46 Uhr

Sie müssen den Prozess finden, der das Dateihandle enthält. Verwenden Sie den Befehl von Dmitry Alexandrov, dort sehen Sie den Prozess und pid. In unserem Fall war die "alte" Lack-Protokolldatei der Space Killer.

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

Vergessen Sie nicht, den Dienst erneut zu starten oder zu verarbeiten, wenn es sich um einen Dämon oder einen anderen Dienst auf Ihrem Computer handelt. Wenn du kannst, starte einfach den Computer neu;)


9

Ok, lass uns die Manpages überprüfen:

df - Speicherverbrauch des Dateisystems melden

und

du - Schätzen Sie den Speicherplatzbedarf

Diese beiden Tools waren für unterschiedliche Vorschläge gedacht. Während dfdie Dateisystemnutzung angezeigt werden soll, dusoll die Dateibereichsnutzung gemeldet werden. duArbeitet von Dateien aus, während dfauf Dateisystemebene gearbeitet wird, und meldet, was der Kernel für verfügbar hält. Lesen Sie weiter in der duManpage, um dies zu unterstützen:

Fassen Sie die Festplattennutzung jeder DATEI rekursiv für Verzeichnisse zusammen.

es heißt, duarbeitet mit Dateien.

dfZeigt den im Dateisystem verfügbaren Speicherplatz an, der die einzelnen Dateinamenargumente enthält. Wird kein Dateiname angegeben, wird der verfügbare Speicherplatz auf allen derzeit gemounteten Dateisystemen angezeigt.

Hier heißt es, dass dfes nicht um die Dateien, sondern um das Dateisystem selbst geht.


Sie können die Verwendung mit dem Zeichen -x ändern, um anzugeben, dass nur Dateien im angegebenen Dateisystem gezählt werden sollen.
Macetw

1

Einfach gesagt:

Sie haben duohne Root-Berechtigungen ausgeführt. So ist es in dem verfügbaren Speicherplatz zu überprüfen , nicht in der Lage /proc, /mntusw, Ordner.

df Zeigt den insgesamt genutzten bzw. freien Speicherplatz an.

Wenn Sie also das Linux-Root-Dateisystem überprüfen, nehmen Sie den duBericht als endgültig.


0
df

Fassen Sie den freien Speicherplatz zusammen

Es zeigt den verfügbaren Speicherplatz an.

du

Fassen Sie die Festplattennutzung zusammen.

Es zeigt die Menge des verwendeten Speicherplatzes an.


ja, aber im ergebnis von "df-th" zeigte es 68g verwendet. Wenn ich heute morgen versuche, auf das Ubuntu-System zuzugreifen, wird immer noch die Meldung "Das System läuft im Low-Graphics-Modus" angezeigt. Wenn ich jedoch die Speichernutzung überprüfe, zeigen die Befehle "df" und "du" ein vernünftiges Ergebnis. Aber was ist das Problem mit dem "Low-Graphics-Modus"?
user2068965

Schauen Sie sich auf diese .
Mitch

0

nichts so verwirrendes: hier ist look: =

1) du == Datenträgernutzung
Wie viel Speicherplatz wird von diesen Dateien verwendet?

2) df == Disk Free
Wie viel freier Speicherplatz haben wir?

Auch dafür läuft das System im Low-Graphics-Modus " hier "


0

Ich tat
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Das hat genau die große Diskrepanz von 21 GB erklärt, die ich gesehen habe!
Die fragliche Datei war / Swap-Datei, wenn 21GB !!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.