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
100
demandé sur Sanket Sahu 2011-09-13 16:15:37

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.

77
répondu Mat 2011-09-13 12:18:59

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 sur ls , le POSIXLY_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 ou fstat . 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 fois physical_blocks_in_use et physical_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
30
répondu Don Scott 2017-05-23 12:02:42

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.

25
répondu Dave Lasley 2011-09-13 12:19:19

juste pour mentionner - vous pouvez utiliser-h (ls-lh) pour convertir ce dans un format lisible par l'homme.

16
répondu Tsvetomir Dimitrov 2011-09-13 13:21:19