Se você executar ls -l em um arquivo que contenha uma letra, ele será listado como tamanho 2B. Se o seu sistema de arquivos estiver em blocos de 4k, pensei em arredondar os arquivos para o tamanho do bloco? É porque ls -l realmente lê a contagem de bytes do inode? Em que circunstâncias você é arredondado para bloquear respostas versus respostas reais de contagem de bytes nos utilitários Linux 2.6 Kernel GNU?
linux
filesystems
ls
ext3
Gregg Leventhal
fonte
fonte
Respostas:
Eu acho que você inseriu essa letra no arquivo com
echo a > file
ouvim file
, o que significa que você terá essa letra e uma nova linha adicional (dois caracteres, portanto, dois bytes).ls -l
mostra o tamanho do arquivo em bytes, não em blocos (para ser mais específico: comprimento do arquivo ):(observe que
cat -A
exibe novas linhas como$
caractere)Em contraste com
ls -l
,du
mostrará o tamanho real ocupado no disco:(na verdade,
du
mostra o tamanho em unidades de 1 kB, então aqui o tamanho é de 4 × 1024 bytes = 4096 bytes = 4 kiB, que é o tamanho do bloco neste sistema de arquivos)Para
ls
mostrar isso, você precisará usar a-s
opção em vez de / além de-l
:A primeira coluna é o tamanho alocado, novamente em unidades de 1kiB. O último pode ser alterado especificando
--block-size
, por exemplofonte
Eu acho que a resposta profunda é a seguinte:
Como as outras respostas mostram, em princípio, um arquivo criado com dois bytes possui dois bytes (show by
ls -l
) e ocupa 4 KiB (show bydu
ouls -ls
).Vejo:
Ok,
test
tem comprimento 1 e tamanho (em disco) 4 KiB. Mas:(o primeiro comando adiciona 8191 zero bytes a
test
), agora o teste tem comprimento 8192, mas ainda ocupa 4 KiB no disco (ele possui um "furo") nele (1).Alguns sistemas de arquivos também podem compactar arquivos curtos para ocupar menos espaço compartilhando blocos (veja, por exemplo, empacotamento de cauda ) e outros como btrfs copiam na gravação , portanto, o relacionamento entre um arquivo, seu comprimento lógico e quanto espaço ele ocupa um disco é complexo.
Notas de rodapé:
(1) Na verdade, não é um buraco , está no final ... mas ainda assim, funciona até o final do exemplo.
fonte
ls -l
é apenas um formato longo.ls -ls
é usado para exibir o tamanho do bloco.Teste
Como podemos ver, o tamanho do arquivo está listado como 2B. No entanto, se você precisar verificar o tamanho do bloco, execute o comando abaixo.
O 4 acima mostra o tamanho do bloco usado. Também pode verificar o mesmo usando o
stat
comando.Agora, surge a pergunta sobre por que
ls -ls
lista o tamanho do bloco como 4 enquantostat
exibe o tamanho do bloco como 8. O motivo desse comportamento está claramente explicado na resposta aqui .fonte