Vous pouvez trouver la définition de cette ligne dans le ls documentation de votre plate-forme. Pour coreutils ls (celui que l'on trouve sur beaucoup de systèmes Linux), les informations peuvent être trouvées via info coreutils ls :
Pour chaque répertoire répertorié, faites précéder les fichiers d'une ligne "total BLOCKS", où BLOCKS est l'allocation totale du disque pour tous les fichiers de ce répertoire.
La formule :qu'est-ce que c'est ? numéro ?
total entier =Somme de (physical_blocks_in_use) * physical_block_size/ls_block_size) pour chaque fichier.
Où :
ls_block_sizeest une variable d'environnement arbitraire (normalement 512 ou 1024 octets) qui est librement modifiable avec le--block-size=<int>drapeau surls, lePOSIXLY_CORRECT=1Variable d'environnement GNU (pour obtenir des unités de 512 octets), ou le-kflag pour forcer les unités de 1 Ko.physical_block_sizeest la valeur dépendante du système d'exploitation d'une interface de bloc interne, qui peut ou non être connectée au matériel sous-jacent. Cette valeur est normalement 512b ou 1k, mais dépend entièrement du système d'exploitation. Il peut être révélé par le%Bvaleur surstatoufstat. Notez que cette valeur est (presque toujours) sans rapport avec le nombre de blocs physiques sur un moderne périphérique de stockage.
Pourquoi tant de confusion ?
Ce nombre est assez détaché de toute métrique physique ou significative. De nombreux programmeurs juniors n'ont pas d'expérience avec les trous de fichiers ou les liens durs/sym. De plus, la documentation disponible sur ce sujet précis est quasi inexistante.
Le manque de cohérence et l'ambiguïté du terme "taille de bloc" a été le résultat de la confusion facile de nombreuses mesures différentes et des niveaux d'abstraction relativement profonds liés à l'accès au disque.
Exemples d'informations contradictoires :du (ou ls -s ) contre stat
Exécution de du * dans un dossier de projet donne ceci :(Remarque :ls -s renvoie les mêmes résultats.)
dactyl:~/p% du *
2 check.cc
2 check.h
1 DONE
3 Makefile
3 memory.cc
5 memory.h
26 p2
4 p2.cc
2 stack.cc
14 stack.h
Totale :2+2+1+3+3+5+26+4+2+14 =62 Blocs
Pourtant, quand on exécute stat nous voyons un ensemble différent de valeurs. Exécution de stat dans le même répertoire donne :
dactyl:~/p% stat * --printf="%b\t(%B)\t%n: %s bytes\n"
3 (512) check.cc: 221 bytes
3 (512) check.h: 221 bytes
1 (512) DONE: 0 bytes
5 (512) Makefile: 980 bytes
6 (512) memory.cc: 2069 bytes
10 (512) memory.h: 4219 bytes
51 (512) p2: 24884 bytes
8 (512) p2.cc: 2586 bytes
3 (512) stack.cc: 334 bytes
28 (512) stack.h: 13028 bytes
Totale : 3+3+1+5+6+10+51+8+3+28 =118 Blocs
Remarque : Vous pouvez utiliser la commande
stat * --printf="%b\t(%B)\t%n: %s bytes\n"> pour afficher (dans l'ordre) le nombre de blocs, (entre parenthèses) la taille de ces blocs, le nom du fichier et la taille en octets, comme indiqué ci-dessus.
Il y a deux choses importantes à retenir :
statsignale à la fois lephysical_blocks_in_useetphysical_block_sizetel qu'utilisé dans la formule ci-dessus. Notez que ces valeurs sont basées sur les interfaces du système d'exploitation.dufournit ce qui est généralement accepté comme une estimation assez précise d'utilisation du disque physique.
Pour référence, voici le ls -l du répertoire ci-dessus :
dactyl:~/p% ls -l
**total 59**
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.cc
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.h
-rw-r--r--. 1 dhs217 grad 0 Oct 16 2013 DONE
-rw-r--r--. 1 dhs217 grad 980 Oct 16 2013 Makefile
-rw-r--r--. 1 dhs217 grad 2069 Oct 16 2013 memory.cc
-rw-r--r--. 1 dhs217 grad 4219 Oct 16 2013 memory.h
-rwxr-xr-x. 1 dhs217 grad 24884 Oct 18 2013 p2
-rw-r--r--. 1 dhs217 grad 2586 Oct 16 2013 p2.cc
-rw-r--r--. 1 dhs217 grad 334 Oct 16 2013 stack.cc
-rw-r--r--. 1 dhs217 grad 13028 Oct 16 2013 stack.h
C'est le nombre total de blocs du système de fichiers, y compris les blocs indirects, utilisés par les fichiers répertoriés. Si vous exécutez ls -s sur les mêmes fichiers et additionnez les nombres rapportés, vous obtiendrez ce même nombre.