Was ist der Befehl Unix-du-Algorithmus verwendet zu berechnen Speicherplatz?
Frage
Ich habe versucht, du
zu berechnen Plattennutzung auf einem einzigen Verzeichnis heute. Die Größe des Verzeichnisses ist 6GB und es dauerte die folgende Höhe der Zeit zu berechnen:
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
Was ist der Algorithmus Unix-Befehl du Anwendungen zu berechnen Speicherplatz? Warum ist es so langsam? Gibt es Alternativen Speicherplatz effizienter zu berechnen? Die Plattform des Aufrufs ist Sun
. Das Verzeichnis für die Größe berechnet wurde, ist NFS montiert ist.
Lösung
Ich denke, es ist nur rekursiv das Verzeichnis geht, während die Addition der Größe der Dateien gefunden. Ganz einfach, aber natürlich braucht es Zeit. Es könnte sein, schneller, wenn das Dateisystem diese Vorgänge macht schneller.
Andere Tipps
du hat alle Verzeichnisse aufzulisten und jede Datei stat gefunden, so dass Enden mit all lesen über die Platte
, während die Größe der Dateien immer bringt es ihnen und wenn Sie fertig druckt er die Summe
zum Beispiel auf diese ein Verzeichnis mit wie 2 Millionen Dateien auf einem Dateisystem sshfs:
prompt$ time du -sh .
367G .
real 12m53.093s
user 0m3.848s
sys 0m14.265s
aber wegen für den zweiten Lauf zu Cachen es dauert nur:
prompt$ time du -sh .
367G .
real 4m56.875s
user 0m4.136s
sys 0m15.257s
Die Geschwindigkeit hängt von Dateien / Verzeichnisse zählen. Wenn Sie ein Verzeichnis mit 6 1Gb-Dateien haben, wird es viel weniger Zeit zu berechnen nehmen. Es berechnet Dateien Größe im angegebenen Verzeichnis und rekursiv für jedes Kind-Verzeichnis.