Warum zeigen df und du unterschiedliche Ausgaben?

8

Wenn ich den Befehl ausführe df -h /tmp, heißt es, dass die Festplattenauslastung 100% beträgt , aber wenn ich es versuche du -sh /tmp, heißt es, dass die Festplattenauslastung 2% beträgt .

Ich möchte wissen, warum diese Befehle unterschiedliche Ausgaben anzeigen, wie diese beiden Befehle funktionieren und was die Lösung für dieses Problem ist.

Kontext: /tmp wird auf einem eigenen Dateisystem installiert. Ich verwende Ubuntu 12.04 Server Edition für mein VPS-Konto. Aufgrund dieses Problems beschweren sich /tmp100% Auslastung laut dfeinigen Programmen über freien Speicherplatz in /tmp.

Nischay
quelle

Antworten:

10

du meldet freien Speicherplatz, indem erreichbare Inodes gescannt und ihre Größe berechnet werden.

Wenn eine Datei erstellt, geöffnet und später gelöscht wird, während sie noch geöffnet ist, hat das geöffnete Programm weiterhin Zugriff auf die Datei, und Schreib- und Lesevorgänge können an diesem Speicherort auf der Festplatte ausgeführt werden. duberücksichtigt solche geöffneten Dateien nicht, wohingegen dies der dfFall ist.

Ein einfacher Neustart sollte / tmp leeren und Ihr Problem lösen.

Eine Alternative wäre, geöffnete Dateien zu scannen und den Prozess neu zu starten oder abzubrechen, bei dem die gelöschten Dateien nicht freigegeben wurden.

Mahesh
quelle
1

Einige Dateien im Root-Dateisystem können hinter einem Mount-Punkt versteckt werden. Dateien können unter dem Bereitstellungspunkt erstellt werden, wenn das entsprechende Gerät nicht bereitgestellt wird, und wenn das Gerät erneut bereitgestellt wird, werden Dateien nicht mit dem Befehl du gezählt. Sehr wahrscheinliches Problem, wenn es einen großen Unterschied zwischen du- und df-Ergebnissen gibt.

Nick
quelle
Bingo. Das war die Ursache für mich.
JDhildeb
-1

Stellen Sie sicher, dass Sie sudobeim Laufen du. Wenn Sie beispielsweise ausführen du -hs /*, wird die tatsächliche Festplattennutzung nur angezeigt, wenn Sie hinzufügen sudo.

raimohanska
quelle