`du -s .` e` du -hs .` oferecem resultados diferentes (no OS X)


12

A diferença com e sem -hdeve ser apenas as unidades legíveis por humanos, certo?

Bem, aparentemente não ...

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

Ou talvez eu esteja enganado e o resultado du -s .não esteja em KB?


3
Tente usar du --block-size=1024 -s .. Talvez o seu BLOCK_SIZEestá definido para512
Echoes_86

6
Na página de manual (OSX): "Se BLOCKSIZE não estiver definido e a opção -k não for especificada, a contagem de blocos será exibida em blocos de 512 bytes"
user4556274

O que não é super útil se o sistema de arquivos estiver realmente em blocos de 4096 bytes.
DopeGhoti

Portanto, não há como ter o tamanho em bytes? Eu pensei que -hestava apenas dividindo-se por 1024 e adicionando algumas unidades
Creak

2
echo "74216696*512" | bc37998948352. E sim, -hconverte-se na forma legível por seres humanos dividindo-se repetidamente por 1024. O que obtive foi 35.3887, que é muito próximo do que durelata. Quanto ao tamanho em bytes, basta usar --block-size=1. No Linux, há uma -bopção para isso, mas não estou familiarizado com o OS Xdu
Sergiy Kolodyazhnyy 5/17/17

Respostas:


23

dusem um especificador de formato de saída fornece o uso do disco em blocos de 512 bytes, não em kilobytes . Você pode usar a opção -kpara exibir em kilobytes. No OS X (ou macOS, MacOS ou Macos; o que você quiser), você pode personalizar a unidade padrão configurando a variável de ambiente BLOCKSIZE(isso também afeta outros comandos).


1
Não sabia disso ... Qual é o interesse em ter o número de blocos? Eu nunca vi uma pessoa usando blocos quando se fala de tamanhos no disco ...
Creak

2
Blocos são a unidade atômica dos sistemas de arquivos. Qualquer arquivo consumirá um número inteiro de blocos no disco. Um bloco pode ser preenchido apenas parcialmente com dados reais, mas o bloco inteiro é alocado para o arquivo. O uso diário da maioria das pessoas não se preocupa com blocos, exceto no sentido de porcentagem usada versus livre. Mas utilitários de baixo nível (por exemplo fdisk, dfe du) o trabalho em blocos salvo indicado porque essa é a unidade pela qual eles contam internamente.
DopeGhoti

1
@ Crack Na verdade, essa parte da resposta estava errada. A unidade não é o tamanho do bloco do sistema de arquivos. Para os propósitos clássicos de comandos Unix, como du"bloco" significa 512 bytes. Veja o tamanho do bloco do arquivo - diferença entre stat e ls , Diferença entre o tamanho do bloco e o tamanho do cluster
Gilles 'SO- stop be evil'

3
"Qualquer arquivo consumirá um número inteiro de blocos no disco." Bem, geralmente sim - a menos que seu sistema de arquivos use empacotamento de cauda . Mas sim, os blocos são a unidade básica do sistema de arquivos (embora o tamanho real do bloco não se alinhe necessariamente ao tamanho do bloco usado por du).) #
Wildcard

3

O problema é que duretorna o tamanho em número de blocos de 512 bytes.

Para ter o tamanho em KB, você pode usar a -kopção que usa blocos de 1024 bytes:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.