Quel Est ce "total" à la toute première ligne après ls-l? [fermé]
Quel Est ce "total" dans la sortie de ls-l?
$ ls -l /etc
total 3344
-rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg
-rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg
drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi
-rw-r--r-- 1 root root 48 Feb 8 2008 adjtime
drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist
4 réponses
vous pouvez trouver la définition de cette ligne dans la documentation ls
pour votre plate-forme. Pour coreutils
ls
(celui trouvé sur beaucoup de systèmes Linux), les informations peuvent être trouvées via info coreutils ls
:
pour chaque répertoire qui est listé, préface les fichiers avec une ligne "total BLOCKS", où BLOCKS est l'allocation totale du disque pour tous les fichiers dans ce répertoire.
la formule: Qu'est-ce que que nombre?
total int = somme de (physical_blocks_in_use) * physical_block_size/ls_block_size) pour chaque fichier.
où:
ls_block_size
est une variable d'environnement arbitraire (normalement 512 ou 1024 bytes) qui est librement modifiable avec le--block-size=<int>
drapeau surls
, lePOSIXLY_CORRECT=1
GNU variable d'environnement (pour obtenir des unités de 512 octets), ou le drapeau-k
pour forcer 1 ko unités.physical_block_size
est la valeur dépendante de L'OS 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 complètement de OS. Il peut être révélé à travers la valeur%B
stat
oufstat
. noter que cette valeur est (presque toujours) sans rapport avec le nombre de blocs physiques sur un dispositif de stockage moderne .
pourquoi tant de confusion?
ce nombre est assez éloigné de toute métrique physique ou significative. Beaucoup de programmeurs Juniors n'ont pas eu l'expérience avec trous de fichier ou dur / sym des liens . En outre, la documentation disponible sur ce sujet est pratiquement inexistante.
le manque de cohérence et l'ambiguïté du terme " Taille du bloc " ont été le résultat de nombreuses mesures différentes étant facilement confondues, et les niveaux relativement profonds d'abstraction tournant autour de l'accès disque.
exemples d'informations contradictoires: du
(ou ls -s
) vs stat
exécuter du *
dans un dossier de projet donne le résultat suivant: (Note: 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
Total : 2+2+1+3+3+5+26+4+2+14 = 62 Blocs
Pourtant, lorsqu'on exécute stat
nous voyons un ensemble différent de valeurs. Exécuter 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
Total: 3+3+1+5+6+10+51+8+3+28 = 118 Blocs
Note: vous pouvez utiliser la commande
stat * --printf="%b\t(%B)\t%n: %s bytes\n"
> pour afficher (dans l'ordre) le nombre de blocs, (en ordre) la taille de ceux blocs, le nom du fichier et la taille en octets, comme indiqué ci-dessus.
il y a deux choses importantes à prendre:
-
stat
indique à la foisphysical_blocks_in_use
etphysical_block_size
comme utilisé dans la formule ci-dessus. Notez que ce sont des valeurs basées sur des interfaces OS. -
du
fournit ce qui est généralement accepté comme une estimation de l'utilisation du disque physique.
Pour référence, voici la 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-à-dire le nombre total de blocs de système de fichiers, y compris les blocs indirects, utilisés par les fichiers énumérés. Si vous lancez ls -s
sur les mêmes fichiers et additionnez les nombres déclarés vous obtiendrez ce même nombre.
juste pour mentionner - vous pouvez utiliser-h (ls-lh) pour convertir ce dans un format lisible par l'homme.