问:
Linux下软连接与硬连接区别
回答:
符号链接
存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)
1、软链接文件
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
命令格式:
代码:
ln [-s] source_path target_path
2、硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是
代码:
ln -d existfile newfile
引用:
硬链接文件有两个限制
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修改
软:相当于MS下的快捷方式,不占用INODE
硬:相当于一个文件的考贝!占用INODE
问:
RH9下开启一个终端,进入/home目录,输入ls -l 显示总用量29,我一开始以为总用量指的是该目录下的文件数,显示格式如下,
文件类型和权限 未知何意 用户名 用户组 大小 建立时间 目录名
drwxr--r-- 2 user1 usergroup1 4096 10月 25 08:16 user1
第2列的数字的意义?
答:
如果是文件,2就是硬链接数;
如果是文件夹,2就是这个文件夹下的目录的数目(包括.和..这两个特殊目录)。
问:
为什么对一个文件创建了他的硬连接之后,两个文件指向相同的inode。只要为一个对一个文件的进行修改另一个文件的内容也将会改变。但是在终端下创建完一个硬连接(ln a_file.txt b_file.txt)之后呢,如果在窗口下,用gedit进行修改之后呢,会发现,a_file.txt的文件内容并没有得到改变。此时在终端下输入ls -l会发现,多出了一个文件。a_file.txt b_file.txt b_file.txt~.为什么会出现这种情况呢?
答:
此时在终端下输入命令 vi b_file.txt~会发现这个文件和a_file.txt文件内容是一样的。这就是说,如果用gedit方式修改一个文件时,会先将原文件删除,再修改,最后保存为b_file.txt。这时,b_file.txt文件事实已经不再是原来的那个文件了。这时,如果用命令ls -il会发现,a_file.txt,b_file.txt~有着相同的inode。这证明了之前所猜想的是正确的。如果用vi命令对文件b_file.txt~进行修改,会发现修改的结果会影响到两个文件,a_file.txt,b_file.txt~。
综上,问题的原因出在我们用geidt对文件进行修改。如果用VI对文件进行修改的话,就不会出现修改后a_file.txt b_file.txt内容不一致的情况了。