два файла с одинаковым индексом, но счетчик ссылок равен 1 - PullRequest
0 голосов
/ 30 октября 2018

каждый файл на разделе диска имеет уникальный номер инода. создание жесткой ссылки увеличит счетчик ссылок файла, который можно увидеть при использовании команды ls -l. Мне было немного любопытно, и я попытался напечатать номер инода / usr / bin / useradd и / usr / sbin / useradd

goku@vegeta:/tmp$ ls -li /usr/bin/useradd && ls -li /usr/sbin/useradd   
1587075 -rwxr-xr-x 1 root root 125952 Jul 28 15:18 /usr/bin/useradd  
1587075 -rwxr-xr-x 1 root root 125952 Jul 28 15:18 /usr/sbin/useradd  
goku@vegeta:/tmp$  

что я не понял, так это то, что оба этих файла имеют один и тот же индекс, но счетчик ссылок по-прежнему равен 1, даже если они принадлежат одному разделу, который является /dev/sda3

goku@vegeta:/tmp$ df /usr/sbin/useradd && df /usr/bin/useradd  
Filesystem     1K-blocks    Used Available Use% Mounted on  
/dev/sda3       35862048 7992636  26018020  24% /  
Filesystem     1K-blocks    Used Available Use% Mounted on  
/dev/sda3       35862048 7992636  26018020  24% /  

так как два файла могут принадлежать одному разделу и иметь одинаковый индекс, но ls -l печатает 1 для счетчика ссылок? при использовании команды diff он говорит, что эти файлы идентичны

goku@vegeta:~$ diff -s /usr/bin/useradd /usr/sbin/useradd   
Files /usr/bin/useradd and /usr/sbin/useradd are identical  
goku@vegeta:~$  

, но при использовании команды find для поиска файла с номером индекса 1587075 выдает только файл useradd в / usr / bin а не в / usr / sbin

goku@vegeta:~$ sudo find / -inum 1587075  
/usr/bin/useradd  
goku@vegeta:~$  

поэтому мои вопросы:
1-если / usr / bin / useradd и / usr / sbin / useradd являются жесткими ссылками, почему ls -li печатает 1 для счетчика ссылок?
2 - почему find возвращает файл только в / usr / bin / , а не в / usr / sbin / при использовании опции inum? я что-то упускаю из-за inode? спасибо

...