深入理解Linux文件与日志分析

内容:

  • inode与block
  • 硬链接与软连接
  • 恢复误删除的文件
  • 分析日志文件

inode和block概述

文件数据包括信息与实际数据

文件存储在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节。

block(块)

连续的八个三区组成一个block是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。

文件数据包括实际数据与元信息(类似文件属性)。文件数据寻相互在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此一个文件必须占用一个inode,并且至少占用一个block。

inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不适用文件名,而使用inode号码来识别文件。对于系统来说,当用户在Linux系统中试图访问一个文件,系统会先根据文件名去查找它对应的inde号码,通过inode号码,获取inode信息。根据inode信息,查找该用户是否具有访问该文件的权限,如果有就指向相应的数据block,并且读取数据。如果没有就拒绝

inode(索引节点)

中文译名为"索引节点",也叫i节点

用于存储文件元信息

inoe的内容

inode包含文件的元信息

文件的字节数

文件拥有者的User ID

文件的GROUP ID

文件的读、写、执行权限

文件时间戳

每个inde都有一个号码,操作系统用inode号码来识别不同的文件Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名
inode的号码

用户通过文件名打开文件时,系统内部的过程

系统找到这个文件名对应的inode号码

通过inode号码,获得 inode信息

根据inode信息,找到文件数据

查看inode号的方法命令:

ls -i:查看文件对应的inode号码,ls -i文件名

stat:查看inode信息中的inode号码,stat文件名

inode的大小

inode也会消耗硬盘空间,所以格式化的时候,才做系统自动将硬盘分成两个区域。一个是数据区,存放文件数据:另一个是inoe区,存放在inode所包含的信息。每个inode的大小,一般是128字节或256字节。同常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行"df -i"命令即可查看每个硬盘分区对应的inode总数和已经使用的i弄得数量。

由于inode号码与文件名分离,导致Linux系统具备以下集中特有的现象:

一、inode的特殊作用

当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件

二、

移动或者重命名文件时,只改变文件名,不影响inode号码

三、

打开一个文件后,系统通过inode号码来识别文件,不再考虑文件名

四、

使用vi编辑器修改文件数据保存后,会生成一个新的inode号码。但是,如果使用ehco进行“>”的追加内容。则不会变更inode号。

链接文件

为en文件或目录建立链接文件

连接文件分类

删除原始文件后

失效

仍然可用(文件占用空间与源文件相同)

使用范围

适用于文件或目录

仅适用于文件

保存位置

与原始文件可以位于不同的文件系统中

必须与原始文件在同一个文件系统(如)

链接文件分类

硬链接

ln 源文件 目标位置; 用的很少

软链接

ln -s 源文件 目标位置; 实际工作环境经常使用

命令执行的优先级

第一优先级:指定路径的命令。绝对路径/usr/bin/ls 或者相对路径cd /usr/bin ./1s

第二优先级:别名指定的命令alias myls= ' /usr/bin/ls -alh'

第三优先级:内部命令

第四优先级: hash(哈希)命令

linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。

hash表能提高命令的调用速率。

第五优先级:通过 PATH 定义的路径顺序查找

如果以上顺序都找不到,就会报“未找到命令...”的错误

深入理解Linux文件与日志分析

内容:

  • #### inode与block
  • #### 硬链接与软连接
  • #### 恢复误删除的文件
  • #### 分析日志文件

inode和block概述

文件数据包括信息与实际数据 文件存储在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节。 block(块) 连续的八个三区组成一个block是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。 文件数据包括实际数据与元信息(类似文件属性)。文件数据寻相互在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此一个文件必须占用一个inode,并且至少占用一个block。 inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不适用文件名,而使用inode号码来识别文件。对于系统来说,当用户在Linux系统中试图访问一个文件,系统会先根据文件名去查找它对应的inde号码,通过inode号码,获取inode信息。根据inode信息,查找该用户是否具有访问该文件的权限,如果有就指向相应的数据block,并且读取数据。如果没有就拒绝 inode(索引节点) 中文译名为"索引节点",也叫i节点 用于存储文件元信息 inoe的内容

inode包含文件的元信息

文件的字节数 文件拥有者的User ID 文件的GROUP ID 文件的读、写、执行权限 文件时间戳

每个inde都有一个号码,操作系统用inode号码来识别不同的文件Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名
inode的号码

用户通过文件名打开文件时,系统内部的过程 系统找到这个文件名对应的inode号码 通过inode号码,获得 inode信息 根据inode信息,找到文件数据 查看inode号的方法命令: ls -i:查看文件对应的inode号码,ls -i文件名 stat:查看inode信息中的inode号码,stat文件名 inode的大小 inode也会消耗硬盘空间,所以格式化的时候,才做系统自动将硬盘分成两个区域。一个是数据区,存放文件数据:另一个是inoe区,存放在inode所包含的信息。每个inode的大小,一般是128字节或256字节。同常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行"df -i"命令即可查看每个硬盘分区对应的inode总数和已经使用的i弄得数量。

由于inode号码与文件名分离,导致Linux系统具备以下集中特有的现象:

一、inode的特殊作用 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件 二、 移动或者重命名文件时,只改变文件名,不影响inode号码 三、 打开一个文件后,系统通过inode号码来识别文件,不再考虑文件名 四、 使用vi编辑器修改文件数据保存后,会生成一个新的inode号码。但是,如果使用ehco进行“>”的追加内容。则不会变更inode号。

链接文件

为en文件或目录建立链接文件 连接文件分类


软链接

硬链接

删除原始文件后

失效

仍然可用(文件占用空间与源文件相同)

使用范围

适用于文件或目录

仅适用于文件

保存位置

与原始文件可以位于不同的文件系统中

必须与原始文件在同一个文件系统(如)

链接文件分类 硬链接 ln 源文件 目标位置; 用的很少 软链接 ln -s 源文件 目标位置; 实际工作环境经常使用 命令执行的优先级 第一优先级:指定路径的命令。绝对路径/usr/bin/ls 或者相对路径cd /usr/bin ./1s 第二优先级:别名指定的命令alias myls= ' /usr/bin/ls -alh' 第三优先级:内部命令 第四优先级: hash(哈希)命令 linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。 hash表能提高命令的调用速率。 第五优先级:通过 PATH 定义的路径顺序查找 如果以上顺序都找不到,就会报“未找到命令...”的错误