linux - 删除文件时到底发生了什么

标签 linux unix symlink inode hardlink

<分区>

假设我创建了一个文件。一个新的 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/

相关文章:

c - 抽象流 C

linux - 与本地 .config 文件同步困难

python - 如果路径是指向另一个路径的符号链接(symbolic link)

linux - 我如何开始学习 asm(gas)?

linux - 我如何在 Windows 上运行 Ubuntu 的/bin/bash

不同内核补丁之间的 Linux 内核模块

python - os.walk() 是否缺少指向目录的符号链接(symbolic link)?

linux - 如何在 Amazon Linux AMI 上设置 cron 作业

linux - 如何启动多个 xterm 窗口并在每个窗口上运行命令,然后让每个窗口保持打开状态?

shell - 如何提取作为变量传递给 awk 的两个正则表达式之间的字符串?