7
votes

Taille () vs ls -la vs du -h lequel est la taille correcte?

Je compilais un noyau personnalisé et je voulais tester la taille du fichier image. Ce sont les résultats:

ls -la | grep vmlinux
-rwxr-xr-x   1 root   root   8167158 May 21 12:14 vmlinux

du -h vmlinux
3.8M    vmlinux

size vmlinux
   text    data     bss     dec     hex filename
2221248  676148  544768 3442164  3485f4 vmlinux


3 commentaires

Qu'est-ce que stat vmlinux imprimé?


ls signalez la taille de disque sur disque, qui n'a rien à voir avec ce que taille signale. DU signalez le même numéro, vient de convertir en mégaoctets au lieu d'octets. @pavel: ls utilise stat () en interne. Il n'y a pas de différence entre les deux, autres que la manière dont les informations sont présentées.


Comment 8167158 égal à 3,8 m ??


3 Réponses :


11
votes

Ils sont tous corrects, ils montrent simplement différentes tailles.

  • ls montre la taille du fichier (lorsque vous ouvrez et lisez-la, c'est combien d'octets vous obtiendrez)
  • du montre une utilisation réelle du disque pouvant être inférieure à la taille du fichier en raison de trous
  • Taille montre la taille de l'image d'exécution d'un objet / exécutable qui n'est pas directement liée à la taille du fichier (BSS n'utilise aucun octetage dans le fichier, quel que soit le fichier, le fichier peut contiennent des informations de débogage qui ne font pas partie de l'image d'exécution, etc.)

    Si vous voulez savoir combien de RAM / ROM une exécutable prendra à l'exclusion de l'allocation de mémoire dynamique, Taille vous donne les informations dont vous avez besoin.


1 commentaires

Taille donne de bonnes informations pour un binaire régulier. Je pense que vous voudriez regarder un fichier de carte pour le noyau Linux. Par exemple, .init Les sections sont supprimées après la première exécution, etc. Il peut y avoir Détendez-vous Tables, etc. QUI Taille MAI ou peut ne pas traiter avec.



0
votes

Deux définition doivent être comprises

1 Runtime VS StoreTime (c'est pourquoi Taille diffère)

2 Profondeur de fichier vs répertoire vs (C'est pourquoi DU diffère)

Regardez sur l'exemple ci-dessous: xxx

si vous utilisez Taille non sur l'exécutable, OS signalera une erreur.


0 commentaires

0
votes

Les différences empiriques se produisent le plus souvent pour des fichiers rares et des fichiers compressés et peuvent aller dans les deux sens.

  • du ul>

    Les fichiers clairsemés contiennent des métadonnées sur l'espace nécessaire à une application, que LS lit et s'applique pour son résultat, tandis que DU NON. Par exemple: P>

    truncate -s 1m test.dat
    
    • du> ls li> ul>

      d'autre part peut indiquer, comme dans votre cas, des fichiers qui pourraient occuper beaucoup d'espace sur disque (c.-à-d. Ils se sont propagés entre de nombreux blocs), mais tous les blocs sont remplis, c'est-à-dire leur Bytesize (mesuré par LS) est plus petit que DU (en regardant des blocs occupés). J'ai observé cet exemple plutôt clairement. pour certains fichiers de cornichons Python. p> p>


0 commentaires