上题目:
image.png
image.png
image.png
image.png
题目赘述太多,只要按照步骤来就行了。
首先先创建两个txt文件,文件名分别为file1.txt,file3.txt,文件内容要求不相同。
image.png
然后打开file1.txt并确认内容:
image.png
然后获取这个文件的inode编号
ls -li file1.txt
结果如下:
image.png
接着题目介绍了文件的链接方式,首先是硬链接命令ln
ln [-s] <source file> <target file>
UNIX 提供了两种链接方式:hard links 和 soft links。
硬链接创建一个单独的目标文件,该文件的索引节点与源文件相同。
ln file1.txt file2.txt
image.png
可以看到inode相同,并且file2.txt的颜色高亮了。
查看file2.txt的内容:
image.png
与file1.txt的内容一样。
接着修改file2.txt的内容,并同时查看file1.txt的内容:
image.png
可以看到,在修改了file2的内容后,file1的内容也跟着被修改了。
将file1.txt删除后,查看file2文件是否存在:
image.png
file2.txt文件还存在。
接着检查rm和unlink命令的man pages。即strace命令(strace命令上边介绍过)
strace rm file2. txt
strace命令会追踪在执行rm file2.txt命令时候所用到系统调用。
image.png
image.png
可见用到了一些系统调用:execve\mmap\access\open\fstat\brk\unlink\newfstatat\lseek\close等
我觉得这里比较特殊的应该是unlink这个系统调用,我想这也是题目想让我们注意到的。
下面是关于unlinkat的解释:
image.png
在这里,可见file2.txt是文件的最后一个链接,所以调用了unlink系统调用。
下面是关于软链接的方面的内容,题目首先介绍了软链接的基本的概念。
软链接(或符号链接)创建一个新文件,该文件指向姓名文件链接到此文本中可用的源代码中。
然后创建一个file3.txt的软链接。
ln -s file3.txt file4.txt
然后查看下各自的inode:
ls -li file*.txt
image.png
可以看到inode是不同的。
然后与硬链接的实验相同,修改file4.txt的内容,查看file3.txt的内容是否改变。
image.png
可以看到file3.txt的内容也随之改变了。
接着删除file3.txt,并尝试修改file4.txt的内容:
image.png
可以看到file4.txt的内容清空了,并且file4.txt的高亮变红了。
image.png
这里应该是因为file4.txt是file3.txt的软链接,即windows下的快捷方式,真实的文件内容只有被链接文件的绝对路径(不太准确但意思差不多是这个意思)。所以当被链接文件被删除后,链接文件的内容就被清空了,正如上图看到的那样。
本题实验到此结束,总结起来四个字:浪费时间。
网友评论