linux 软硬链接原理图

文件删除控制的变量:

i_link 文件硬链接数量,下图第二列就是硬链接数

i_count 引用计数(有一个程序使用i_count 就加1)

文件删除的条件: i_link=0 and i_count=0

工作中会出现一种情况,inode被占满,但是磁盘空间还有很多空闲,只要把小文件和空文件都删除就行了。主要是因为cron 中产生了太多的mail 小文件,很多小文件删除的时候,不能直接 rm * 删除当前目录下所有文件,可以使用find ./ -type f|xargs rm -f 或者 ls|xargs rm -f 或直接删除上级目录

工作中会出现另外一种情况,block满了,但是被程序占用着,因此把大文件删除了之后磁盘空间没有释放,需要重启占用进程或杀掉占用的进程

建议将文件清空,echo “” > filename

lsof |grep deleted 查找被进程占用,但是被删除的文件

. 和 当前目录 互为硬链接 如果一个目录他的硬链接数为2 则算上了 .

.. 和 上级目录 互为硬链接 如果一个目录他的硬链接数为8 除了自身和. 还有他目录下的其他目录下面的.. ,.. 和 上级目录 互为硬链接

软连接原理图

软连接和源文件是不同类型的文件,也是不同的文件。inode 号也不相同。

企业生产目录软链接作用:

1. 编译软件时制定版本号,访问时希望去掉版本号。所有程序都访问软链接文件当软件升级高版本后,只需要删除链接文件重新创建到高版本路径的软链接即可。

2. 企业发布代码(php),需要把所有代码传到一个新发布的临时目录或者新站点目录。发布时要么mv, 也可以重建软链接到新的临时目录

3. 不方便移动目录,使用 ln –

删除软链接文件对硬链接和源文件无影响

删除硬链接文件对软链接和源文件无影响

删除源文件,对硬链接无影响,对软链接会导致软链接失效找不到源文件,白字红底闪烁

同时删除源文件和所有硬链接文件,则文件被删除

很多硬件设备中的快照功能,就是利用了硬链接的原理

源文件和硬链接索引节点号相同,是同一个文件不同的出入口

源文件和软链接的文件索引节点号不同,是不同的文件,软链接相当于快捷方式,含有源文件的位置指向。

目录无法做硬链接,只能做软链接