Linux下软链接的注意事项
软链接在Linux下的指令是:
ln -s [source] [target]
在Ubuntu下如果source被删除会导致软链接也被对应删除,很神奇(一般情况下source被删除软链接就变成死链接了)。
软链接其实就是一个文件然后存储着到source的路径,而硬链接则是指向同一个inode的另一个文件名(每个文件都有唯一inode标注,inode用满了就算磁盘没满也会存不了文件了,只有没有任何文件指向一个inode后文件才会被标记为删除,详情参考linux存储结构设计。需要注意的是文件夹是一种特殊的文件,没有inode所以不能创建硬链接)
需要注意的是,软链接在操作文件夹时有时会有歧义的。
举个例子,比如想把/whatever/source软链接到/home/somebody/target这个地方,那么指令是
ln -s /whatever/source/ /home/somebody/target
这个时候因为/home/somebody下面没有target,所以target会被创建,作为一个软链接文件。
但这个时候如果你再把一个东西软链接到target的话,就会被认为是要软链接到target对应的真实目录下(因为target已经存在了),这样就会导致target下面又多了一个软链接。那很显然因为target本身就是个快捷方式一样的东西,所以这个多出来的软链接实际上是在source里的,就会导致出现目录混乱的情况。如果更加特殊,是上面这个指令不小心运行了两次,那么结果就会是source里面又出现了一个名叫source并且也指向source本身的软链接,直接就无限循环起来了。
(这么个破事都能写篇随笔,看来最近有点无所事事了)

浙公网安备 33010602011771号