o uso do inode não corresponde à contagem

1

Eu tenho esse uso de inode:

host:~ # df -i
Filesystem                             Inodes  IUsed   IFree IUse% Mounted on
/dev/hda1                              655360 655357       3  100% /

mas, se eu executar este comando:

for i in 'find . -xdev -type d '; do echo 'ls -a $i | wc -l' $i; done | sort -n

Eu tenho esta saída:

host:/ # find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
      3 srv
     17 root
     25 bin
     83 sbin
    133 lib64
    184 opt
    985 boot
   2109 etc
   4487 lib
  50489 usr

mas a soma de todos eles não corresponde a todos. Eu não tenho idéia de onde os inodes são usados.

    
por Diego 06.10.2017 / 15:20

1 resposta

1

Porque o seu script encontra apenas arquivos ( -type f ).

Diretórios e links simbólicos possuem inodes próprios, mas sua solicitação de pesquisa não o encontra.

Corrija seu comando para obter algo assim:

find / -xdev \( -type f -o -type d -o -type l \) | cut -d "/" -f 2 | sort | uniq -c | sort -n

E você terá resultados diferentes.

Alguns conselhos : não use comandos como este para a solução de problemas do inodes. Na maioria dos casos, você tem problemas com pequenos arquivos de log que consomem todos os inodes e o problema básico é encontrar esses arquivos.

Para fazer isso, você pode usar a opção -mtime do comando find :

find / -xdev -mtime -1 -printf '%h\n' -type f | sort | uniq -c | sort -k 1 -n

Este comando retorna diretórios com quantidade de arquivo.

Você pode substituir -type f por \( -type f -o -type d -o -type l \) , conforme mencionado acima.

    
por 06.10.2017 / 15:26

Tags