Comando terminal df

1

O comando Mac Terminal df é uma ferramenta que eu uso para obter espaço em disco. Por exemplo, antes de obter um novo software ou atualização, também anoto meu espaço HD antes e depois da instalação.

Lembro-me de ter usado esse comando com as opções -b, -k, -m ou -g para obter tamanho em blocos de 512 bytes, kilobytes, megabytes ou gigabytes. De acordo com man (descrição manual) de df, essas opções podem mudar BLOCKSIZE também, então se eu usar "df -h" ou "df -H" depois, o resultado será um tamanho em base binária ou decimal. Lembro que tentei isso antes e funcionou bem.

Recentemente, eu tento usar "df -b" para redefinir o BLOCKSIZE. Eu então tento "df -h" ou "df -H" novamente, eu obtenho valores de tamanho todos como gigabytes (binários ou decimais), não esperados em 512 bytes. Então eu tento usar "df -hb" ou "df -Hb", os valores dos resultados são os mesmos (bloco de 512 bytes).

Aqui estão alguns exemplos que eu tive antes:

$ 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 ...
....

Como no exemplo acima, "df -k" redefine o BLOSKSIZE para kilobytes. No entanto, agora eu repito os mesmos comandos, mas não consigo obter os mesmos resultados:

$ 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 ...
....

Não tenho certeza do que impede que o valor de BLOCKSIZE seja redefinido. Como resultado, não consigo obter o tamanho em base decimal (1000 para Kilobytes na base decimal, 1.000.000 para Megabytes na base decimal, ...).

A propósito, eu recebo as informações sobre o uso do df e do BLOCKSIZE de:

$ man df
    
por David.Chu.ca 25.09.2009 / 06:10

2 respostas

1

Eu acho que sua memória de como o comando costumava funcionar está errada; df nunca alterou BLOCKSIZE , apenas substituiu temporariamente. Na verdade, não é possível alterar BLOCKSIZE para nada além de si mesmo - se você executar df 3 vezes, cada instância obterá sua própria cópia do ambiente do seu shell e poderá modificar sua própria cópia, mas não pode fazer nada no ambiente do shell (ou nas outras instâncias).

Dito isso, acho que a única maneira de obter o comportamento desejado é alterar BLOCKSIZE no ambiente do shell:

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

Note que esta maneira de fazer as coisas dá o comportamento persistente que você descreve; depois de definir BLOCKSIZE para o shell pai, ele é passado para todos os comandos que você executa naquele shell a partir desse ponto (até / a menos que você o altere novamente). Se você quiser apenas alterá-lo para um comando específico, use isto:

BLOCKSIZE=1000000 df   # Displays in base-10 Megabytes
df   # Displays in the default format
    
por 25.09.2009 / 18:26
0

Isso deve usar blocos padrão de 512 bytes:

df -P

Se estiver usando o formato legível, uma vez que a quantidade mostrada é suficiente para a próxima medição, ele será exibido (por exemplo, 1024M - > 1G)

    
por 25.09.2009 / 06:31