Comment voir l'utilisation du disque avec moins de surcharge en bash?

8
du -csh /

Ce qui précède prendra énormément de temps à calculer, existe-t-il un moyen de voir le résultat moins précis avec moins de frais généraux?

MISE À JOUR

Ce que je veux savoir, c'est la taille totale sous un répertoire spécifique.

apache
la source

Réponses:

9

En ce qui concerne une version plus optimisée du, je n'en connais pas. Les choses qui me viennent à l'esprit sont:

  1. Stockez ces fichiers sur un disque RAM ou quelque chose comme ça.
  2. Si une seule application écrit dans ce dossier et son sous-dossier, demandez à l'application de garder une trace.
  3. Si tous ces fichiers ont à peu près la même taille et une quantité égale d'entre eux répartis entre les répertoires, vous pouvez simplement compter le nombre de sous-répertoires et le multiplier par fichier par répertoire, puis par fichier. Vous pouvez le faire rapidement en utilisant simplement le nombre de liens physiques pour le répertoire si vous n'avez qu'une seule structure profonde de répertoire ( stat -c '%h') - 2.
  4. Faites en sorte que tous ces fichiers appartiennent à un utilisateur spécifique et utilisez le mécanisme de quota.
  5. Utilisez une partition dédiée et utilisez simplement df. Un système de fichiers virtuel (un fichier sur un système de fichiers qui est monté via le bouclage) pourrait également le faire.

De tout cela, les options de quota et de partition dédiée sont probablement les plus simples et les plus efficaces.

Kyle Brandt
la source
6

Le problème est que «du» doit énumérer tous les objets de la sous-arborescence. Il s'agit d'une opération intensive en métadonnées, qui prend un certain temps pour la plupart des systèmes de fichiers Linux. Certains systèmes de fichiers, NTFS et NSS de Novell viennent à l'esprit, ont la capacité de garder une trace des tailles de répertoire comme celle-ci dans les métadonnées, ce qui rend cette opération beaucoup plus rapide. En règle générale, si votre système de fichiers prend en charge les quotas de répertoires, il doit conserver ces données en interne pour l'application, chaque changement de taille est répliqué dans l'arborescence de répertoires jusqu'au point de quota (NTFS) ou dans chaque répertoire (NSS ) quand cela se produit, il est donc très rapide d'obtenir une taille d'arborescence de répertoires.

Malheureusement, il n'y a aucun moyen d'accélérer le du, juste des solutions de contournement.

  • Exécutez «du» en mode batch et vivez avec des résultats non live
  • Créez un nouveau système de fichiers et utilisez plutôt 'df'
  • Créez un fichier volumineux qui contiendra votre répertoire, montez-le en boucle, formatez-le et utilisez plutôt 'df' sur ce nouveau point de montage. Si vous avez besoin de plus d'espace, démontez le montage de bouclage, étendez le fichier et remontez.
sysadmin1138
la source
+1 Ceci est une réponse très utile.
Richard Holloway
4
du -h --max-depth=1

Vous donne les tailles au format KB / MB / GB humain à partir de votre répertoire de travail actuel.

David Rickman
la source
Je pense qu'ils veulent savoir pourquoi il faut autant de temps pour générer et répondre. Je pense que Windows agit de la même manière. Si vous cliquez avec le bouton droit sur un répertoire, vous devez attendre pendant qu'il calcule la taille de chaque sous-répertoire. C'est juste la façon dont le système de fichiers fonctionne.
The Unix Janitor
Ouais, sauf s'ils exécutent un service d'indexation ou quelque chose.
David Rickman
3

Avec les outils standard, vous devez obtenir la taille de chaque fichier du répertoire chaque fois que vous voulez connaître la taille totale. Un moyen peut-être plus efficace de le faire serait d'avoir un "moniteur de taille de répertoire", qui garde une trace de la taille actuelle du répertoire. Il n'y a rien de tel (que je sache), mais vous pouvez en implémenter un avec inotify. Peut-être pas avec bash (et inotify-tools), mais vous pourriez probablement utiliser python et pyinotify, par exemple.

Dan Andreatta
la source
2

Vous pourriez trouver gt5utile. Il stocke les duinformations les plus récentes et fait une différence par rapport à la prochaine exécution. Il affiche sa sortie à l'aide d'un navigateur en mode texte tel que links.

En pause jusqu'à nouvel ordre.
la source
2

En outre, pensez à l'option -x sur du - "un système de fichiers" si vous le faites

du -xh / --max-depth=1 

Vous ne verrez que le résumé de l'utilisation du disque sur votre partition racine, et il n'essaiera pas d'ajouter / proc, / sys, / dev, etc.

Jason
la source
2

si vous ne souhaitez utiliser le disque que pour le système de fichiers racine,

df -h /


la source
1

Non. Pourriez-vous périodiquement faire un du piped dans un fichier texte, dans un travail cron configuré pour s'exécuter pendant la nuit, afin que vous n'ayez pas de données tout à fait disponibles immédiatement disponibles?

Notez que la mesure de l'espace disque utilisé par un dossier contenant un grand nombre de fichiers sous Windows prend également un certain temps.

xenny
la source
0

df -h fera l'affaire

Antoine Benkemoun
la source
Ce que je veux savoir, c'est la taille totale sous un répertoire spécifique.
apache
0

df -kh /

cela vous montrera l'espace disque utilisé et disponible.

The Unix Janitor
la source
0

Peut-être

df -h

un texte supplémentaire car une réponse courte et concise ne suffit pas pour que serverfault pense que je suis humain.


la source
Mais j'ai besoin de connaître la taille totale sous un répertoire spécifique
apache
alors l'utilisation devra utiliser du
The Unix Janitor
Mais dans Windows, je peux voir l'espace total utilisé sans frais généraux, pourquoi pas sous Linux?
apache
es-tu sérieux? ntfs n'est pas ext3
The Unix Janitor
1
@apache, oh il y a des frais généraux, essayez de voir la taille d'un dossier de 20 Go avec beaucoup de fichiers de 10 à 20 Mo. Il y a des frais généraux def.
Zypher
0

Pour trouver l'espace sous ce répertoire uniquement, répertoriez-le à la place de /. Pour trouver l'espace sous les répertoires fooet bar, répertoriez les deux:

du -csh foo bar
mpez0
la source
0

Vous devez utiliser dnotify pour calculer l'utilisation du disque si le système de fichiers n'est pas changé souvent.

Mircea Vutcovici
la source