Elabora a contagem de links do número de inode?

6

Como posso calcular a contagem de links de um número inode? Se eu sei que o número do inode é, digamos, 592255 - que funcionamento posso fazer para descobrir a contagem de links?

Eu sei que os diretórios têm uma contagem de links de pelo menos 2, mas não sabem como resolver isso.

    
por BubbleMonster 21.03.2014 / 22:59

4 respostas

7

Encontrando a contagem de links usando o nome

Você pode usar o comando stat para obter uma contagem de links em um determinado arquivo / diretório:

$ stat lib/
  File: ‘lib/’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 11666186    Links: 3
Access: (0755/drwxr-xr-x)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2014-03-21 18:16:10.521963381 -0400
Modify: 2014-01-13 17:16:49.438408973 -0500
Change: 2014-01-14 17:57:46.636255446 -0500
 Birth: -

Olhando para a página man do stat :

%h     number of hard links
%i     inode number

Assim, você pode obter apenas esse valor diretamente usando os recursos de saída stat --printf ou --format :

$ stat --printf="%h\n" lib/
3

$ stat --format="%h" lib/
3

$ stat -c "%h" lib/
3

Encontrando a contagem de links usando o inode

Se, por outro lado, você souber o número do inode, só poderá trabalhar para trás da seguinte forma:

$ ls -id lib
11666186 lib

$ find -inum 11666186 -exec stat -c "%h" {} +
3

Referências

por 21.03.2014 / 23:18
5

Dê o número de inode ao comando find e diga para executar o comando stat no arquivo:

find . -inum #### -exec stat -c "%h" {} \;
    
por 21.03.2014 / 23:23
2

Por exemplo

ls -l passwd
-rw-r--r-- 1 root root 1402 2008-03-30 17:49 passwd

Esse número (1) é, na verdade, a contagem de links do arquivo, quando se refere a um arquivo ou ao número de entradas de diretório contidas, quando se refere a um diretório (incluindo as entradas .e ..).

Também por exemplo

ls -i /etc/passwd
8654127 /etc/passwd

Este é o número do inode para o / etc / passwd. Agora você pode descobrir quantos links estão atualmente vinculados a este número de inodes 8654127 com:

find /etc/ -inum 8654127
/etc/passwd

No meu exemplo, é apenas / etc / passwd, então você pode fazer pelo seu caso:

find / -inum 592255
    
por 21.03.2014 / 23:15
1

Para obter a contagem de links do inode sem pesquisando o sistema de arquivos completo, em um sistema de arquivos ext2 / ext3 / ext4 você pode usar debugfs . O lado negativo aqui é que você precisa conhecer o dispositivo e ter privilégios de root. O lado positivo é que pode ser muito, muito mais rápido. Para um arquivo com inode 5638454 on dev/sda2 :

sudo debugfs -R 'stat <5638454>' /dev/sda2

Em btrfs , dado o ponto de montagem /mnt em vez do dispositivo:

stat -c %h $(sudo btrfs inspect-internal inode-resolve 5638454 /mnt)
    
por 21.03.2014 / 23:19

Tags