Tính ra số liên kết của số inode?


7

Làm thế nào tôi có thể tìm ra số lượng liên kết của một số inode? Nếu tôi biết số inode là, giả sử, 592255 - tôi có thể làm gì để tìm ra số lượng liên kết?

Tôi biết các thư mục có số lượng liên kết ít nhất là 2, nhưng không biết làm thế nào để giải quyết nó.

Câu trả lời:


8

Tìm số liên kết bằng tên

Bạn có thể sử dụng statlệnh để lấy số lượng liên kết trên một tệp / thư mục đã cho:

$ 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: -

Hãy xem trang người đàn ông cho stat:

%h     number of hard links
%i     inode number

Vì vậy, bạn có thể nhận được giá trị này trực tiếp bằng cách sử dụng statcác khả năng --printfhoặc --formatđầu ra:

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

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

$ stat -c "%h" lib/
3

Tìm số lượng liên kết bằng cách sử dụng inode

Mặt khác, nếu bạn biết số inode, bạn chỉ có thể làm việc ngược như vậy:

$ ls -id lib
11666186 lib

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

Người giới thiệu


Bạn đã mắc lỗi tương tự như tôi, câu hỏi là tìm số liên kết từ số inode ...
Graeme

@Graeme - đã sửa.
slm

6

Đưa số inode cho findlệnh và yêu cầu nó chạy statlệnh trên tệp:

find . -inum #### -exec stat -c "%h" {} \;

Để có một lời giải thích ngắn gọn về các nút và thư mục, hãy xem: teacher.idallen.com/dat2330/04f/notes/links_and_inodes.html
Michael Martinez

Cũng cần lưu ý: OSX sử dụng một phiên bản stat khác, và thay vì vậy -c, nó yêu cầu -fcờ được sử dụng như sau: find . -inum #### -exec stat -f "%l" {} \;( %llà "Số lượng liên kết cứng đến tệp.")
joshfindit

2

Ví dụ

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

Số này (1) thực sự là số lượng liên kết của tệp, khi đề cập đến một tệp hoặc số lượng mục nhập thư mục chứa, khi đề cập đến một thư mục (bao gồm các mục. Và ..).

Cũng ví dụ

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

Đây là số inode cho / etc / passwd. Bây giờ bạn có thể tìm thấy có bao nhiêu liên kết thực tế được liên kết với số lượng inode 8654127 này với:

find /etc/ -inum 8654127
/etc/passwd

Trong ví dụ của tôi, nó chỉ là / etc / passwd, vì vậy bạn có thể làm cho trường hợp của mình:

find / -inum 592255

1

Để có được số lượng liên kết từ các inode mà không cần tìm kiếm toàn bộ hệ thống tập tin, trên một ext2/ ext3/ ext4hệ thống tập tin mà bạn có thể sử dụng debugfs. Mặt trái ở đây là bạn cần phải biết thiết bị và có quyền root. Ưu điểm của khóa học là nó có thể nhanh hơn nhiều. Đối với một tệp có inode 5638454trên dev/sda2:

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

Bật btrfs, cho điểm gắn kết /mntthay vì thiết bị:

stat -c %h $(sudo btrfs inspect-internal inode-resolve 5638454 /mnt)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.