admin管理员组

文章数量:1487745

【Linux】为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文解答)

一.前情回顾:

1.查看文件元数据与inode编号

  • 我们使用ls -l的时候看到的除了看到文件名,还看到了文件元数据。
代码语言:javascript代码运行次数:0运行复制
[root@localhost linux]# ls -l
总用量 12
-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out
-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c
  • 分别对应含义如下图所示
  • 使用ls -li,还可以看到 inode编号
代码语言:javascript代码运行次数:0运行复制
[root@localhost linux]# ls -l
总用量 12
54329 -rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out

2.硬链接文件不属于真正意义上的文件

※为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号。

  • 我们对test2创建一个硬链接文件test1.hard.link
  • 发现 二者inode编号一致

3.Linux中不允许用户对目录建立硬链接文件

  • 为了1. 防止目录循环引用 2. 保护文件系统结构完整性 3.简化文件系统设计,Linux中不允许用户对目录建立硬链接文件

二.解析部分:

  • 我们分别创建一个普通文件testfile和一个目录文件testdirls -li查看源目录;
  • 发现创建目录,硬链接数是2;创建文件时,硬链接数是1
  • 普通文件,只有 文件名 和inode编号有映射关系 所以硬链接数为1
  • 我们进入空目录,任何一个空目录, 下面都有两个隐藏的 硬链接文件
代码语言:javascript代码运行次数:0运行复制
. 表示当前目录——————因为这个文件(指向)的inode,和目录文件本身的inode是同一个
..表示上一级目录
  • 所以目录文件,除了 文件名 和inode有映射关系 ,还有目录文件下面的硬链接. 和inode有映射关系 所以硬链接数为2

三.理解原理后,试着分析<在newdir1下,再创建newdir2,newdir1硬链接数变成3>

  • 在newdir1下,再创建newdir2,发现newdir1的硬链接数变成了3
  • 我们查看下newdir2的隐藏文件(硬链接),又有一个硬链接文件指向了他
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-13,如有侵权请联系 cloudcommunity@tencent 删除系统设计原理linux连接数据

本文标签: Linux为什么创建目录文件,硬链接数是2创建普通文件时,硬链接数是1(超详细图文解答)