Por que o 'du' em um dispositivo informa o uso zero?

1

Saída de

sudo df -h

é

Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  9.2G  5.7G  3.1G  65% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   357M  720K  356M   1% /run
/dev/disk/by-uuid/13605893-3936-4fd6-a7f5-e249f16c3f72  9.2G  5.7G  3.1G  65% /
tmpfs                                                   5.0M  4.0K  5.0M   1% /run/lock
tmpfs                                                   2.2G  2.5M  2.2G   1% /run/shm
/dev/sda6 

                                          278G   12G  252G   5% /home

enquanto

sudo du -sh /dev/sd*

0   /dev/sda
0   /dev/sda1
0   /dev/sda2
0   /dev/sda5
0   /dev/sda6

o_O

    
por gforce89 02.01.2014 / 17:36

4 respostas

4

Seus dispositivos brutos estão listados em /dev/ , mas não é onde o sistema de arquivos mora. Quando o dispositivo estiver montado, ele estará disponível no ponto de montagem , conforme listado na coluna "Montado em".

Você deve executar du em ou em algum lugar em um ponto de montagem para contar o uso no sistema de arquivos. Por exemplo:

sudo du -sh /home

O que você estava fazendo é perguntar quanto espaço a lista de dispositivos está usando no sistema de arquivos virtual /dev . Isso não é nada, pois é puramente virtual.

    
por gertvdijk 02.01.2014 / 17:38
1

Bem, há uma diferença conhecida entre o espaço livre mostrado por df vs a quantidade de espaço em disco menos o espaço usado em du (devido a tamanhos de bloco e overheads e coisas assim), mas não é isso que você está perguntando aqui ...

du funciona em sistemas de arquivos montados. Você está tentando fazer com que funcione em dispositivos e partições. Se você quiser ver o espaço em um dispositivo específico livre, percorra suas partições, monte-as e execute du com seu argumento --one-file-system (também conhecido como -x ).

Por exemplo:

sudo mount /dev/sda1 /mnt
sudo du -shx /mnt/
sudo umount /mnt/
# repeat for sda2, sdb1, etc
    
por Oli 02.01.2014 / 17:42
1

Um dispositivo como /dev/sda é um tipo especial de arquivo que pode ser usado para acessar algumas funções do kernel. Você pode criar dispositivos usando mknod .

du trata os dispositivos como qualquer outro arquivo e mostra o tamanho que eles estão usando no sistema de arquivos, que é sempre 0.

    
por Florian Diesch 02.01.2014 / 17:58
0

Eu deparei com esse segmento antigo e para quem procura uma solução para listar os tamanhos dos arquivos quando "du" fornece uma saída de tamanho 0 em um sistema de arquivos virtual montado, basta adicionar o sinalizador "-b". Assim:

du -sbh <path>

O seguinte também funcionará (que está incluído no sinalizador "-b"):

du -sh --apparent-size <path>
    
por norbitwise 23.11.2015 / 22:24