# 查看 inode 号(硬链接有相同的 inode) ➜ ls -li original.txt hardlink.txt 123456 -rw-r--r-- 2 user group 1024 Jan 1 10:00 original.txt 123456 -rw-r--r-- 2 user group 1024 Jan 1 10:00 hardlink.txt # 注意:两个文件的 inode 号相同(123456),链接数为 2
# 查看文件内容(内容相同) ➜ cat original.txt Hello World ➜ cat hardlink.txt Hello World
# 修改任一文件,另一个也会改变 ➜ echo"New content" >> original.txt ➜ cat hardlink.txt Hello World New content
# 查看软链接(注意箭头 -> 和不同的 inode) ➜ ls -li original.txt softlink.txt 123456 -rw-r--r-- 1 user group 1024 Jan 1 10:00 original.txt 789012 lrwxrwxrwx 1 user group 12 Jan 1 10:01 softlink.txt -> original.txt # 注意:软链接有独立的 inode(789012),文件类型是 l(链接)
# 查看软链接指向的路径 ➜ readlink softlink.txt original.txt
# 创建指向目录的软链接 ➜ ln -s /path/to/dir linkdir ➜ ls -ld linkdir lrwxrwxrwx 1 user group 12 Jan 1 10:01 linkdir -> /path/to/dir
# 创建指向不存在文件的软链接(死链接) ➜ ln -s nonexistent.txt deadlink.txt ➜ ls -l deadlink.txt lrwxrwxrwx 1 user group 16 Jan 1 10:02 deadlink.txt -> nonexistent.txt ➜ cat deadlink.txt cat: deadlink.txt: No such file or directory
其中三个时间的定义可对应与命令 stat 中查看到三个时间。i_links_count 不仅用于文件的硬链接计数,也用于目录的子目录数跟踪(目录并不显示硬链接数,命令 ls -ld 查看到的是子目录数)。由于文件系统 ext3 对 i_links_count 有限制,其最大数为:32000(该限制在 ext4 中被取消)。尝试在 ext3 文件系统上验证目录子目录及普通文件硬链接最大数可见的错误信息。因此实际文件系统的 inode 之间及与 VFS inode 相较是有差异的。
查看链接信息
使用 ls 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 查看文件详细信息(显示链接数) ➜ ls -l file.txt -rw-r--r-- 2 user group 1024 Jan 1 10:00 file.txt # 第二列的数字 2 表示硬链接数为 2
# 查看软链接 ➜ ls -l softlink.txt lrwxrwxrwx 1 user group 12 Jan 1 10:01 softlink.txt -> original.txt # 文件类型 l 表示链接,-> 指向目标文件
# 显示 inode 号 ➜ ls -li file.txt hardlink.txt 123456 -rw-r--r-- 2 user group 1024 Jan 1 10:00 file.txt 123456 -rw-r--r-- 2 user group 1024 Jan 1 10:00 hardlink.txt # 相同的 inode 号表示是硬链接
# 方法1:使用 ls -l(软链接显示 ->) ➜ ls -l file.txt link.txt -rw-r--r-- 2 user group 1024 Jan 1 10:00 file.txt lrwxrwxrwx 1 user group 12 Jan 1 10:01 link.txt -> file.txt
# 方法2:使用 stat(查看文件类型) ➜ stat link.txt | grep "symbolic link"
# 方法3:使用 file 命令 ➜ file link.txt link.txt: symbolic link to file.txt
2. 删除软链接的正确方法
1 2 3 4 5 6 7 8 9
# 正确:直接删除软链接文件 ➜ rm softlink.txt
# 错误:删除软链接指向的文件(会变成死链接) ➜ rm original.txt ➜ ls -l softlink.txt lrwxrwxrwx 1 user group 12 Jan 1 10:01 softlink.txt -> original.txt ➜ cat softlink.txt cat: softlink.txt: No such file or directory