Qu'est-ce que l'algorithme commande utilise unix du pour calculer l'espace disque?
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.
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.