指向文件的硬链接 ant stat st_nlink 不匹配

hard links refererring to a file ant stat st_nlink don't match

使用 Ubuntu 18.04 bash,如果我列出所有共享相同特定 inode 4 的文件:

sudo find -inum 4 -printf "%D %i %n %p\n" 2>/dev/null

我可以看到同一特定 inode (=4) 的硬 link 数量的不同值。 如果我用 C 代码来做,也会发生同样的情况。

对于其他 inode,我得到正确的相同硬 links 值。

那个 inode 4 有什么问题?

这是输出:

54 4 2 d ./run/user/1000/systemd
52 4 2 d ./run/user/121/systemd
27 4 1 f ./run/lock/asound.state.lock
23 4 7 d ./run/udev
66305 4 4 d ./boot/efi/EFI
6 4 1 c ./dev/rfkill
8 4 1 f ./sys/kernel/debug/pinctrl/pinctrl-devices
21 4 23 d ./sys/devices
43 4 1 f ./sys/fs/cgroup/devices/cgroup.sane_behavior
42 4 1 f ./sys/fs/cgroup/perf_event/cgroup.sane_behavior
41 4 1 f ./sys/fs/cgroup/hugetlb/cgroup.sane_behavior
40 4 1 f ./sys/fs/cgroup/freezer/cgroup.sane_behavior
39 4 1 f ./sys/fs/cgroup/net_cls,net_prio/cgroup.sane_behavior
38 4 1 f ./sys/fs/cgroup/pids/cgroup.sane_behavior
37 4 1 f ./sys/fs/cgroup/cpuset/cgroup.sane_behavior
36 4 1 f ./sys/fs/cgroup/cpu,cpuacct/cgroup.sane_behavior
35 4 1 f ./sys/fs/cgroup/blkio/cgroup.sane_behavior
34 4 1 f ./sys/fs/cgroup/memory/cgroup.sane_behavior
33 4 1 f ./sys/fs/cgroup/rdma/cgroup.sane_behavior
30 4 1 f ./sys/fs/cgroup/systemd/cgroup.sane_behavior
29 4 1 f ./sys/fs/cgroup/unified/cgroup.controllers
1812 4 1 l ./snap/core18/1074/bin/bzcmp
1797 4 1 l ./snap/core18/1066/bin/bzcmp
1803 4 1 f ./snap/gnome-characters/292/flavor-select
1809 4 1 f ./snap/gnome-characters/296/flavor-select
1810 4 2 d ./snap/gnome-3-28-1804/67/etc/X11/Xreset.d
1794 4 2 d ./snap/gnome-3-28-1804/63/etc/X11/Xreset.d
1796 4 25 d ./snap/gtk-common-themes/1313/share/gtk2
1804 4 15 d ./snap/gtk-common-themes/1198/share/gtk2
1798 4 1 f ./snap/gnome-system-monitor/100/flavor-select
1801 4 1 f ./snap/gnome-system-monitor/95/flavor-select
1807 4 1 l ./snap/core/7169/bin/bzcmp
1808 4 1 l ./snap/core/7270/bin/bzcmp
1806 4 1 f ./snap/gnome-calculator/260/flavor-select
1802 4 1 f ./snap/gnome-calculator/406/flavor-select
1805 4 1 f ./snap/gnome-calculator/352/flavor-select
1793 4 3 d ./snap/gnome-logs/45/etc
1792 4 1 f ./snap/gnome-logs/61/flavor-select
1800 4 1 f ./snap/gnome-logs/57/flavor-select
1799 4 2 d ./snap/gnome-3-26-1604/90/etc/X11/Xreset.d
1795 4 2 d ./snap/gnome-3-26-1604/88/etc/X11/Xreset.d

编辑后,修改命令的输出显示每个文件系统的 inode 编号是唯一的。不同的设备号,硬link个数是没有关系的

正如预期的那样,对于普通文件(类型 f)或设备(在这种情况下,对于字符设备类型 c),您会看到 link 计数 1 .

目录(类型 d)的目录名称和包含的 . 的 link 计数至少为 2。如果目录包含子目录,link 计数将等于直接子目录的数量 + 2,因为每个子目录将包含一个 .. 条目。

有关 /snap 的信息,请参阅 https://snapcraft.io/docs/system-snap-directory

有关 /sys/fs/cgroup 的信息,请参阅 http://man7.org/linux/man-pages/man7/cgroups.7.html