`du -s .` et` du -hs .` donne des résultats différents (sous OS X)


12

La différence avec et sans -hne devrait être que les unités lisibles par l'homme, non?

Eh bien, apparemment non ...

$ du -s .
74216696    .
$ du -hs .
 35G    .

Ou peut-être que je me trompe et que le résultat du -s .n'est pas en Ko?


3
Essayez d'utiliser du --block-size=1024 -s .. Peut-être que votre BLOCK_SIZEest réglé sur512
Echoes_86

6
À partir de la page de manuel (OSX): "Si BLOCKSIZE n'est pas défini et que l'option -k n'est pas spécifiée, le nombre de blocs sera affiché en blocs de 512 octets"
user4556274

Ce qui n'est pas super utile si le système de fichiers est en fait dans des blocs de 4096 octets.
DopeGhoti

Il n'y a donc aucun moyen d'avoir la taille en octets? Je pensais -hjuste diviser par 1024 et ajouter quelques unités
Creak

2
echo "74216696*512" | bcsorties, 37998948352. Et oui, -hconvertit en forme lisible par l'homme en divisant encore et encore par 1024. Ce que j'ai obtenu était 35,3887, ce qui est terriblement proche de ce que durapporte. Quant à la taille en octets, utilisez simplement --block-size=1. Sous Linux, il y a une -boption pour cela, mais je ne connais pas OS Xdu
Sergiy Kolodyazhnyy

Réponses:


23

dusans spécificateur de format de sortie donne l'utilisation du disque en blocs de 512 octets, pas en kilo-octets . Vous pouvez utiliser l'option -kpour afficher en kilo-octets à la place. Sous OS X (ou macOS, ou MacOS, ou Macos; selon ce que vous aimez), vous pouvez personnaliser l'unité par défaut en définissant la variable d'environnement BLOCKSIZE(cela affecte également les autres commandes).


1
Je ne savais pas que ... Quel est l'intérêt d'avoir le nombre de blocs? Je n'ai jamais vu une personne utiliser des blocs pour parler des tailles sur le disque ...
Creak

2
Les blocs sont l'unité atomique des systèmes de fichiers. Tout fichier consommera un nombre entier de blocs sur le disque. Un bloc ne peut être que partiellement rempli de données réelles, mais le bloc entier est alloué au fichier. L'utilisation quotidienne de la plupart des gens ne se soucie pas des blocs autrement que dans un sens de pourcentage utilisé par rapport à libre. Mais les utilitaires de bas niveau (par exemple fdisk, dfet du) fonctionnent en blocs, sauf indication contraire, car c'est l'unité par laquelle ils comptent en interne.
DopeGhoti

1
@Creak En fait, cette partie de la réponse était fausse. L'unité n'est pas la taille de bloc du système de fichiers. Aux fins des commandes Unix classiques telles que du«bloc» signifie 512 octets. Voir la taille des blocs de fichiers - différence entre stat et ls , Différence entre la taille des blocs et la taille du cluster
Gilles 'SO- arrête d'être mauvais'

3
"Tout fichier consommera un nombre entier de blocs sur le disque." Eh bien, généralement oui, sauf si votre système de fichiers utilise l' empaquetage de queue . Mais oui, les blocs sont l'unité de base du système de fichiers (bien que la taille réelle du bloc ne soit pas nécessairement alignée sur la taille de bloc utilisée par du.) :)
Wildcard

3

Le problème est que durenvoie la taille en nombre de blocs de 512 octets.

Afin d'avoir la taille en Ko, vous pouvez utiliser l' -koption qui utilise des blocs de 1024 octets à la place:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.