在一個目錄下執(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 (子目錄中的..)