Qu'est-ce que l'algorithme commande utilise unix du pour calculer l'espace disque?

StackOverflow https://stackoverflow.com/questions/4313065

  •  29-09-2019
  •  | 
  •  

Question

Je l'ai essayé d'utiliser du pour calculer aujourd'hui l'utilisation du disque sur un seul répertoire. La taille du répertoire est 6GB et il a fallu la quantité de temps suivante pour calculer:

prompt> time du -sh .
6.0G   .

real    1m32.405s
user    0m2.053s
sys     0m16.552s

Qu'est-ce que l'algorithme utilise des commandes unix du pour calculer l'espace disque? Pourquoi est-il si lent? Y a-t-il des alternatives pour calculer l'espace disque plus efficacement? La plate-forme d'invocation est Sun. Le répertoire pour lequel la taille a été calculé est monté NFS.

Était-ce utile?

La solution

Je pense juste marche récursive le répertoire, tout en ajoutant les tailles des fichiers trouvés. Très simple, vraiment, mais bien sûr, il faut du temps. Il pourrait être plus rapide si le système de fichiers rend ces opérations plus rapidement.

Autres conseils

du doit énumérer tous les répertoires et stat chaque fichier trouvé de sorte que finit avec lu sur tout le disque

tout en obtenant la taille des fichiers, il les résume et lorsque vous avez terminé, il imprime la somme

par exemple sur ce répertoire un avec comme 2 millions de fichiers sur un système de fichiers sshfs:

prompt$ time du -sh .
367G    .

real    12m53.093s
user    0m3.848s
sys     0m14.265s

mais en raison de la mise en cache pour la deuxième manche, il ne prend que:

prompt$ time du -sh .
367G    .

real    4m56.875s
user    0m4.136s
sys     0m15.257s

Sa vitesse dépend de fichiers / répertoires comptent. Si vous avez un répertoire avec 6 fichiers 1Gb, il faudra beaucoup moins de temps à calculer. Il calcule la taille des fichiers dans le répertoire donné et récursive pour chaque répertoire enfant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top