<分区>
假设我创建了一个文件。一个新的 inode 已经创建。 然后我创建了一个指向该文件的软链接(soft link),并删除了硬链接(hard link)。
inode 还存在吗?它是否指向内存中的相同位置? 是软链接(soft link)连接到内存连接的inode,导致找不到文件,还是软链接(soft link)失去了与inode的连接?
谢谢。
<分区>
假设我创建了一个文件。一个新的 inode 已经创建。 然后我创建了一个指向该文件的软链接(soft link),并删除了硬链接(hard link)。
inode 还存在吗?它是否指向内存中的相同位置? 是软链接(soft link)连接到内存连接的inode,导致找不到文件,还是软链接(soft link)失去了与inode的连接?
谢谢。
最佳答案
这是题外话而且不止一个问题,但是:
Linux 中的软链接(soft link)不连接到 inode。它只有文件名(查看软链接(soft link)的大小?它是名称链接的长度!)。即使重命名原始链接也会断开链接。
[bart@localhost link]$ touch foo
[bart@localhost link]$ ln -s foo bar
[bart@localhost link]$ ls -la
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo
[bart@localhost link]$ mv foo foo2
[bart@localhost link]$ ls -la
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo2
[bart@localhost link]$ cat bar
cat: bar: No such file or directory
如果你删除一个文件,一个 inode 就消失了。
关于linux - 删除文件时到底发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47801301/