ceacer 2 已发布 1月28号 分享 已发布 1月28号 Linux下的软连接和硬链接 在 Linux 操作系统中链接会分两种,一种被称为硬链接,另一种被称为符号链接,即软链接。而默认情况下,ln 命令产生的是硬链接。 Table of Contents Linux 软硬链接 1. 如何查看inode 关于inode是什么,可以看这篇文章:Inode 详解 bash # 查看文件和文件夹的inode号 $ ll -di /boot / /app # 查看挂载点文件夹的inode号 $ df -i 2. 做inode增长实验 文件粉碎工具shred:shred -uzvn10 FILE重复随机写入 10 次覆盖源文件,然后最后删除此文件。 # 创建60万个文件的方法1(效率不高) $ for i in {1..600000}; do touch file$1; echo file$i is created;done # 创建60万个文件的方法2(效率高) $ echo file{1..600000} | xargs touch # 删除前20万个文件 $ echo file{1..200000} | xargs rm # 在创建的过程中,可以另开一个窗口,用下面命令,每隔1秒运行df -hi命令,可以查看inode的增长情况 $ watch -n1 df -hi 3. 硬链接、软链接 软链接 就相当于 Windows 的快捷方式,删掉源文件,快捷方式就失效了,软链接就找不到源文件了。 硬链接 相当于多个链接指向同一份数据存储区域,每多一个硬链接,硬链接数+1,如果一个文件,有 n 个硬链接,删除 n-1 个硬链接,源文件还在,直到删除所有硬链接,才会删除源文件。 1. 复制(cp) 在复制过程中,复制软连接相当于复制了快捷方式,速度很快,而且可以跨分区。 在复制过程中,复制硬链接分为两种情形:在同一分区复制,相当于多创建一个链接指向原数据存储位置,速度很快。在不同分区复制,相当于把原来分区的数据拷贝过去存储,同时创建一个指向新数据区域的指针,速度比较慢。 2. 删除(rm) 在删除过程中,删除软连接相当于删除了快捷方式,源文件还在。 在删除过程中,删除硬连接相当于删除了一个到数据块的指针,除非删除所有硬链接文件,源文件才删除。 3. 移动(mv) 在移动过程中,移动软连接相当于移动了快捷方式而已。 在移动过程中,移动硬连接分为两种情形:在同一分区移动,相当于创建了一个新 inode,指向数据块,并把原来的 inode 删掉在不同分区移动,要把数据块复制到新分区,然后在新分区创建新的 inode 号指向新的数据块,并且把原来分区的 inode 号和数据块都删掉。 4. 软连接支持对目录创建,硬链接不支持 【问题 1】:当我们看到一个磁盘,使用空间没满,但是却提示”no space left on device” 那可能是inode用完了 【问题 2】:如何删除数量很多的文件(比如前面做实验创建的 60 万个文件) 技巧是使用管道|和xargs,管道|后面会讲,管道是指的是前面命令的输出作为后面命令的输入。xargs,前面命令多个输出,可以用xargs一个个的传给后面的命令,而不是已下载全传给后面命令,可以解决参数太长的情况ls | xargs rm # 创建不成功 ln dir1 dir2 # 创建成功 ln /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/ens33 5. 如何写软连接相对路径 软连接写相对路径,要根据软连接文件的路径来写。 # 例如要在把/etc/issue 软连接到/app/d1/d2/d3/ilink ln -s ../../../../../etc/issue /app/d1/d1/d3/ilink 6. 如何软链接设备文件 设备文件比较特殊,如果要创建设备文件的链接,需要用到mknod命令: [root@centos7 etc]# ll /dev/sda brw-rw----. 1 root disk 8, 0 May 22 09:06 /dev/sda #得到主设备号和复设备号。 mknod /app/sda b 8 0 ll -i /dev/sda /app/sda 软链接练习 # 1. 创建一个目录tomcat-8.5.23,创建一个软连接tomcat到这个目录;在创建一个目录tomcat-9.0.1, 把tomcat的软连接指向新的tomcat-9.0.1目录。 ln -sv tomcat-8.5.23 tomcat rm -rf tomcat ln -sv tomcat-9.0.1 tomcat # 2. 创建一个目录/mnt/lfs/tools, 然后创建/mnt/lfs/tools的软连接/tools,一般有这样的命令:ln -sv /mnt/lfs/tools /tools,如何可以更短? mkdir -v /mnt/lfs/tools ln -sv /mnt/lfs/tools / 4. file 命令的使用 常用选项 -b 列出文件辨识结果时,不显示文件名称 -f 列出文件中文件名的文件类型 -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符 -L 查看对应软链接对应文件的文件类型 –help 显示命令在线帮助 注意事项 file命令就是查看的文件头部的信息,可以用hexdump查看源文件源码信息 (也可以用xxd命令看)。 如果是二进制文件,会显示二进制的头信息。 如果是文本文件,就直接是文本。 [root@centos7 ~]# hexdump -C -n 100 /bin/ls 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 02 00 3e 00 01 00 00 00 48 4b 40 00 00 00 00 00 |..>.....HK@.....| 00000020 40 00 00 00 00 00 00 00 18 c4 01 00 00 00 00 00 |@...............| 00000030 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1d 00 |[email protected]...@.....| 00000040 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00 |........@.......| 00000050 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 |@.@.....@.@.....| 00000060 f8 01 00 00 |....| 00000064 [root@centos7 ~]# hexdump -C -n 100 /etc/issue 00000000 5c 53 0a 4b 65 72 6e 65 6c 20 5c 72 20 6f 6e 20 |S.Kernel r on | 00000010 61 6e 20 5c 6d 0a |an m.| 00000016 5. readlink 命令 读取软连接指向的真实路径 [root@centos7 ~]$ readlink /etc/redhat-release centos-release 文章作者: Escape 评论链接 在其他网站上分享 更多分享选项...
推荐帖
创建账户或登录以发表评论
您需要成为会员才能发表评论
创建一个帐户
在我们的社区注册一个新账户。很简单!
注册新账户登入
已有账户?在此登录
立即登录