徐州手机网站优化公司,百度seo一本通,网站建设客户需求分析调研,成都网站建设木木科技目录
认识inode 如何理解创建一个空文件#xff1f; 如何理解对文件写入信息#xff1f;
如何理解删除一个文件#xff1f;
为什么拷贝文件的时候很慢#xff0c;而删除文件的时候很快#xff1f; 如何理解目录
编辑
文件的三个时间
编辑
Access#xff1a; …目录
认识inode 如何理解创建一个空文件 如何理解对文件写入信息
如何理解删除一个文件
为什么拷贝文件的时候很慢而删除文件的时候很快 如何理解目录
编辑
文件的三个时间
编辑
Access 文件最后被访问的时间。
Modify 文件内容最后的修改时间。
Change 文件属性最后的修改时间
软硬链接
硬链接
ln 源文件名称 硬链接文件名称
为什么这些我自己创建的目录的硬链接数是2 这里我试着给目录建立硬链接却失败了为什么不行
软链接
ln -s 源文件名称 软链接文件名称
软硬链接的区别
用法补充 认识inode
在Linux操作系统中 文件 内容 属性文件的属性和内容是分离存储的其中保存属性信息的结构称之为inode因为系统当中可能存在大量的文件所以我们需要给每个文件的属性集起一个唯一的编号即inode号。 也就是说inode是一个文件的属性集合Linux中几乎每个文件都有一个inode为了区分系统当中大量的inode我们为每个inode设置了inode编号。
说白了通俗一点 就是文件的身份证号 与文件唯一对应 每行包含7列 模式 硬链接数 文件所有者 组 大小 最后修改时间 文件名
ls -l读取存储在磁盘上的文件信息然后显示出来 其实这个信息除了通过这种方式来读取还有一个stat命令能够看到更多信息 这里可以查看到文件的inode
在命令行当中输入ls -i即可显示当前目录下各文件的inode编号。 先简单了解一下文件系统
常见的文件系统有EXT2、EXT3、XFS、NTFS等 Linux ext2文件系统上图为磁盘文件系统图内核内存映像肯定有所不同磁盘是典型的块设备硬盘分区被 划分为一个个的block。一个block的大小是由格式化的时候确定的并且不可以更改。例如mke2fs的-b选项可以设 定block大小为1024、2048或4096字节。而上图中启动块Boot Block的大小是确定的
Block Groupext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相
同的结构组成。政府管理各区的例子
超级块Super Block存放文件系统本身的结构信息。记录的信息主要有bolck 和 inode的总量
未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的
时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏可以说整个
文件系统结构就被破坏了
GDTGroup Descriptor Table块组描述符描述块组属性信息有兴趣的同学可以在了解一下
块位图Block BitmapBlock Bitmap中记录着Data Block中哪个数据块已经被占用哪个数据块没
有被占用
inode位图inode Bitmap每个bit表示一个inode是否空闲可用。
i节点表:存放文件属性 如 文件大小所有者最近修改时间等
数据区存放文件内容 如何理解创建一个空文件 通过遍历inode位图的方式找到一个空闲的inode。在inode表当中找到对应的inode并将文件的属性信息填充进inode结构中。将该文件的文件名和inode指针添加到目录文件的数据块中。 如何理解对文件写入信息 通过文件的inode编号找到对应的inode结构。 通过inode结构找到存储该文件内容的数据块并将数据写入数据块。 若不存在数据块或申请的数据块已被写满则通过遍历块位图的方式找到一个空闲的块号并在数据区当中找到对应的空闲块再将数据写入数据块最后还需要建立数据块和inode结构的对应关系。 如何理解删除一个文件 将该文件对应的inode在inode位图当中置为无效。将该文件申请过的数据块在块位图当中置为无效。 为什么拷贝文件的时候很慢而删除文件的时候很快 因为拷贝文件需要先创建文件然后再对该文件进行写入操作该过程需要先申请inode号并填入文件的属性信息之后还需要再申请数据块号最后才能进行文件内容的数据拷贝而删除文件只需将对应文件的inode号和数据块号置为无效即可无需真正的删除文件因此拷贝文件是很慢的而删除文件是很快的 如何理解目录 都说在Linux下一切皆文件目录当然也可以被看作为文件。目录有自己的属性信息目录的inode结构当中存储的就是目录的属性信息比如目录的大小、目录的拥有者等。目录也有自己的内容目录的数据块当中存储的就是该目录下的文件名以及对应文件的inode指针。 文件的三个时间 Access 文件最后被访问的时间。
Modify 文件内容最后的修改时间。
Change 文件属性最后的修改时间 当我们修改文件内容时文件的大小一般也会随之改变所以一般情况下Modify的改变会带动Change一起改变但修改文件属性一般不会影响到文件内容所以一般情况下Change的改变不会带动Modify的改变。 我们若是想将文件的这三个时间都更新到最新状态可以使用命令touch 文件名来进行时间更新。
软硬链接
硬链接
这里我给可执行程序test创建一个硬链接
ln 源文件名称 硬链接文件名称
[lsyhcss-ecs-d737 day_12_6]$ ln test mytest_h首先可以发现他们的inode都是一样的
其次两个程序的内容一样 还有就是权限后面的数字加了一个也就是硬链接数加了一
与软连接不同的是当硬链接的源文件被删除后硬链接文件仍能正常执行只是文件的链接数减少了一个因为此时该文件的文件名少了一个。
总之硬链接就是让多个不在或者同在一个目录下的文件名同时能够修改同一个文件其中一个修改后所有与其有硬链接的文件都一起修改了 为什么这些我自己创建的目录的硬链接数是2
不是说linux一切皆文件那我创建了一个文件按道理只有一个硬链接而目录也是文件但创建目录为什么是两个硬链接数 因为每个目录创建后该目录下默认会有两个隐含文件.和..它们分别代表当前目录和上级目录因此这里创建的目录有两个名字一个是dir另一个就是该目录下的.所以刚创建的目录硬链接数是2。通过命令我们也可以看到dir和该目录下的.的inode号是一样的也就可以说明它们代表的实际上是同一个文件 这里我试着给目录建立硬链接却失败了为什么不行 答案是为了防止闭环如果真的可以建立那么当一个进程在某种场景需要搜索文件进入给目录的硬链接就会陷入一个闭环如下图所以Linux系统的设计者早就想到了这一点给上级目录和当前目录指定符号. 和 ..当系统搜索文件路径时通过某种手段跳过这样就避免了环路路径问题 软链接
ln -s 源文件名称 软链接文件名称 通过ls -i -l命令查看到软链接和硬链接的inode是不一样的并且软链接文件的大小比源文件的大小要小得多。 软链接又叫做符号链接软链接文件相对于源文件来说是一个独立的文件该文件有自己的inode号但是该文件只包含了源文件的路径名所以软链接文件的大小要比源文件小得多。软链接就类似于Windows操作系统当中的快捷方式。 软链接文件只是其源文件的一个标记当删除了源文件后链接文件不能独立存在虽然仍保留文件名但却不能执行或是查看软链接的内容了
软硬链接的区别 软链接是一个独立的文件有独立的inode而硬链接没有独立的inode。软链接相当于快捷方式硬链接本质没有创建文件只是建立了一个文件名和已有的inode的映射关系并写入当前目录 用法补充
在其他地方建立软盈利链接
用绝对文件路径的方式指明源文件和目标文件 ln命令常用的参数 -b 删除覆盖以前建立的链接-d 允许超级用户制作目录的硬链接-f 强制执行-i 交互模式文件存在则提示用户是否覆盖-n 把符号链接视为一般目录-s 软链接(符号链接)-v 显示详细的处理过程