Linux為什么創(chuàng)建目錄后,硬鏈接數(shù)是2

在一個目錄下執(zhí)行 ll

[hadoop@hadoop0 test]$ ll
total 8
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 17 22:28 a
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 17 22:28 b
-rw-rw-r--. 1 hadoop hadoop    0 Jan 17 22:28 c

發(fā)現(xiàn),a目錄與b目錄的硬鏈接數(shù)是2 ,而文件c的硬鏈接數(shù)是1
這是為什么呢?

發(fā)現(xiàn):
在a目錄下,創(chuàng)建一個目錄,a的硬鏈接會加1

cd a ; mkdir d

[hadoop@hadoop0 test]$ tree
.
├── a
│   └── d
├── b
└── c

3 directories, 1 file

ll

[hadoop@hadoop0 test]$ ll
total 8
drwxrwxr-x. 3 hadoop hadoop 4096 Jan 17 22:29 a
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 17 22:28 b
-rw-rw-r--. 1 hadoop hadoop    0 Jan 17 22:28 c

再創(chuàng)建一個

cd a ; mkdir e

[hadoop@hadoop0 test]$ tree
.
├── a
│   ├── d
│   └── e
├── b
└── c

4 directories, 1 file

ll

total 8
drwxrwxr-x. 4 hadoop hadoop 4096 Jan 17 22:32 a
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 17 22:28 b
-rw-rw-r--. 1 hadoop hadoop    0 Jan 17 22:28 c

發(fā)現(xiàn)a的硬鏈接又增加1.

原因:
原來是因為目錄中的 .. . 這兩個目錄

ls -la

[hadoop@hadoop0 test]$ ls -la
total 16
drwxrwxr-x. 4 hadoop hadoop 4096 Jan 17 22:28 .
drwxrwxr-x. 3 hadoop hadoop 4096 Jan 17 22:28 ..
drwxrwxr-x. 4 hadoop hadoop 4096 Jan 17 22:32 a
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 17 22:28 b
-rw-rw-r--. 1 hadoop hadoop    0 Jan 17 22:28 c

每創(chuàng)建一個目錄,就會在創(chuàng)建的目錄下默認(rèn)新增..上級目錄的硬鏈接和.當(dāng)前目錄的硬鏈接
使用stat命令查看文件的信息,我們發(fā)現(xiàn):

stat a

[hadoop@hadoop0 test]$ stat a
  File: ‘a(chǎn)’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 135810      Links: 4
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  hadoop)   Gid: ( 1001/  hadoop)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-01-17 22:32:03.796604932 +0800
Modify: 2018-01-17 22:32:01.830052167 +0800
Change: 2018-01-17 22:32:01.830052167 +0800
 Birth: -

a 的Inode 為 135810

進入a目錄cd a
執(zhí)行 stat .

[hadoop@hadoop0 a]$ stat .
  File: ‘.’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 135810      Links: 4
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  hadoop)   Gid: ( 1001/  hadoop)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-01-17 22:32:03.796604932 +0800
Modify: 2018-01-17 22:32:01.830052167 +0800
Change: 2018-01-17 22:32:01.830052167 +0800
 Birth: -

.目錄的Inode也是135810

我們再進入d目錄 (a的子目錄),使用stat

[hadoop@hadoop0 d]$ stat ..
  File: ‘..’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 135810      Links: 4
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  hadoop)   Gid: ( 1001/  hadoop)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-01-17 22:32:03.796604932 +0800
Modify: 2018-01-17 22:32:01.830052167 +0800
Change: 2018-01-17 22:32:01.830052167 +0800
 Birth: -

發(fā)現(xiàn)a的子目錄d中的..目錄的Inode和a目錄的Inode以及 a目錄中的.目錄的Inode相同.

這就是為什么創(chuàng)建一個目錄,一開始硬鏈接數(shù)為2( 創(chuàng)建的目錄名和目錄中的. ,并且新創(chuàng)建一個目錄,父目錄的硬鏈接會加1 (子目錄中的..)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容