por que o comando du (1) do unix não suporta -i para medição de inode?


7

É simplesmente porque passar de nomes de arquivos para números de inode é difícil no espaço do usuário e você não pode ler inodes a partir daí?


A resposta é dupla, eu acho. Geralmente não está disponível porque, como sugerido, um usuário normal não pode ler inodes arbitrariamente. Ele não está disponível como uma ferramenta que requer acesso root, porque não existe uma maneira fácil e confiável de passar de nomes de arquivos para números de inodes fora do kernel.

Melhor em unix.stackexchange.com
Chris J

Respostas:



2

Use df, não du!

dusignifica "uso do disco". É o dfque significa "sem disco" e verificará o sistema de arquivos adequadamente. Incluindo o uso do inode com a -iopção!

Caso contrário, faça:

find thedirectory -exec ls -di {} \;|awk '{print $1}'|sort|uniq|wc -c

ou similar


Não, quero um resumo hierárquico do uso do inode a partir de uma determinada raiz. Eu sei de que ferramenta estou falando.

mas por que você acha que ele deseja medir o uso do espaço em disco do sistema de arquivos?
precisa

find|wc -l, então ... É claro que você precisará contabilizar arquivos com vários links. Mas sua pergunta realmente não faz sentido.

@ Oleg, eu não disse isso. dftem uma -iopção

2

Isso não fornecerá uma resposta exata - em particular, equipara entradas de diretório a arquivos e, portanto, conta duas vezes com links físicos, além de ter problemas com feeds de linha nos nomes de arquivo / diretório - mas provavelmente é "bom o suficiente" para a maioria dos propósitos:

find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -n

Classifica por contagem de inode (sic). se você deseja uma ordem classificada em diretório tradicional:

find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -k2

Geralmente, eu quero algo assim quando uma unidade está ficando sem inodes e quero saber onde eles estão sendo usados. Para esse efeito, algumas pequenas imprecisões geralmente não são um grande problema.

Deve ser possível usar "find -ls" e analisar os números de inode na lista para eliminar duplicatas, se você quiser algo mais preciso.

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.