Commande df terminal

1

La commande df Terminal Mac est un outil que j’utilise pour obtenir de l’espace disque. Par exemple, avant de recevoir un nouveau logiciel ou une mise à jour, je prends aussi note de mon espace disque dur avant et après l'installation.

Je me souviens d'avoir utilisé cette commande avec les options -b, -k, -m ou -g pour obtenir une taille de 512 octets par blocs, kilooctets, mégaoctets ou gigaoctets. Selon man (description manuelle) de df, ces options peuvent également changer BLOCKSIZE. Ainsi, si j'utilise ensuite "df -h" ou "df -H", le résultat sera une taille en base binaire ou décimale. Je me souviens que j'ai déjà essayé et que cela a bien fonctionné.

Récemment, j'ai essayé d'utiliser "df -b" pour réinitialiser BLOCKSIZE. J'essaie ensuite à nouveau "df -h" ou "df -h", j'obtiens des valeurs de taille exprimées en gigaoctets (binaires ou décimaux), ce qui n'est pas prévu dans 512 octets. Ensuite, j'essaie d'utiliser "df -hb" ou "df -Hb", les valeurs obtenues sont les mêmes (bloc de 512 octets).

Voici quelques exemples que j'avais auparavant:

$ df -k          # this command I get the expected result: 1024-block
Filesystem     512-blocks       Used     Available ...
/dev/disk1s2    97101344    403566296    572023048 ...
....

$ df -h         # the result in binary base, value in 1024-block
Filesystem     1024-blocks       Used      Avail ...
/dev/disk1s2    97101344    403566296  572023048 ...
....

$ df -H         # the result in decimal base, value in 1,000 base
Filesystem     Size         Used     Avail ...
/dev/disk1s2 99431776  413251887 585751601 ...
....

Comme dans l'exemple ci-dessus, "df -k" réinitialise le BLOSKSIZE en kilo-octets. Cependant, maintenant, je répète les mêmes commandes, mais je ne peux pas obtenir les mêmes résultats:

$ df -k          # this command I get the expected result: 1024-block
Filesystem     512-blocks       Used         Avail ...
/dev/disk1s2    97101344    403566296    572023048 ...
...

$ df -h         # the result in binary base but values in Gigabytes
Filesystem     Size    Used  Avail ...
/dev/disk1s2   465Gi  192Gi  273Gi ...
....

$ df -H         # the result in decimal base by values in Gigabytes
Filesystem     Size    Used  Avail ...
/dev/disk1s2   500G    207G   293G ...
....

Je ne suis pas sûr de ce qui empêche la valeur BLOCKSIZE de ne pas être réinitialisée. Par conséquent, je ne peux pas obtenir la taille en base décimale (1 000 pour les kilo-octets en base décimale, 1 000 000 pour les mégaoctets en base décimale, ...).

En passant, je reçois les informations sur l’utilisation de df et de BLOCKSIZE auprès de:

$ man df
David.Chu.ca
la source
J'ai modifié la question pour que mon problème soit clair.
David.Chu.ca

Réponses:

1

Je pense que votre mémoire de la façon dont la commande fonctionnait était fausse; dfn'a jamais changé BLOCKSIZE, l'a seulement remplacé temporairement. En fait, il ne peut pas changer BLOCKSIZEpour rien sauf lui-même - si vous exécutez df3 fois, chaque instance obtient sa propre copie de l'environnement de votre shell, et peut modifier sa propre copie, mais ne peut rien faire à l'environnement du shell (ou à l'autre). instances 'non plus).

Cela dit, je pense que le seul moyen d'obtenir le comportement que vous souhaitez est de changer réellement BLOCKSIZEl'environnement du shell:

export BLOCKSIZE=1000000   # Base-10 Megabytes
df   # No flags, so it uses the inherited BLOCKSIZE

Notez que cette façon de faire donne le comportement persistant que vous décrivez. après avoir été défini BLOCKSIZEpour le shell parent, il est transmis à toutes les commandes que vous exécutez à partir de ce shell (jusqu'à ce que / à moins que vous ne le changiez à nouveau). Si vous voulez seulement le changer pour une commande particulière, utilisez ceci à la place:

BLOCKSIZE=1000000 df   # Displays in base-10 Megabytes
df   # Displays in the default format
Gordon Davisson
la source
Est-il possible de voir la valeur de BLOCKSIZE. J'ai essayé de taper set dans terminal et je ne vois pas cette valeur dans la liste d'environnement.
David.Chu.ca
echo $BLOCKSIZEaffichera sa valeur, s’il existe une variable d’environnement portant ce nom (vous pouvez également utiliser printenvpour afficher toutes les variables d’environnement. Normalement, il est peu probable qu’elle soit définie, auquel cas elle dfutilise sa valeur par défaut, celle de blocs de 512 octets. Je précise que: si une unité est spécifiée avec un indicateur de ligne de commande (comme -kou -h), l’ dfutilise, sinon elle cherche BLOCKSIZE, et si elle est définie l’utilise, sinon elle utilise des blocs de 512 octets.
Gordon Davisson
0

Cela devrait utiliser des blocs par défaut de 512 octets:

df -P

Si vous utilisez un format lisible par l'homme, une fois que la quantité affichée est suffisante pour la prochaine mesure, elle s'affichera ainsi (par exemple, 1024M -> 1G)

John T
la source
que diriez-vous de la valeur de la taille en base décimale? Cette option ne répertorie que la taille en base binaire
David.Chu.ca
Je pense que --block .. est un commentaire, à droite. CA devrait etre #...?
David.Chu.ca
Voir ma question, en fait, le résultat de "df -h" liste les valeurs en Gi sur mon Mac.
David.Chu.ca
BSD df me confond toujours. df -P -Hsemble plus proche de ce que vous recherchez. -P spécifie les blocs par défaut de 512 octets et -H est lisible par l'homme pour les tailles de base 10.
John T
Comme je l'ai mentionné, -H affiche les valeurs dans l'unité G au lieu des 512 octets par défaut. -P affiche les valeurs dans 512 blocs. Cependant, que diriez-vous de k ou m unités en base décimale? Je pense que df -k ou -m ne remplace plus BLOCKSIZE sur mon Mac. Par conséquent, je ne peux pas utiliser -H pour obtenir des valeurs en base décimale en k ou m unité.
David.Chu.ca