一、索引节点:

1indoe表中包含文件系统所有文件列表

 一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包含:

 文件类型,权限,UIDGID;链接数(指向这个文件名路径名称个数);该文件的大小和不同的时间  戳;指向磁盘上文件的数据块指针;有关文件的其他数据。

2、查看节点编号:#ls -i

wKioL1edTTygADslAAAfqlEXApk420.png-wh_50


3indoe表结构:

 

原理图如下:

Linux的文件管理(三)_第1张图片

4、节点编号在不同的分区下可以有相同的编号;同一分区下不能够出现同样的节点编号。(如:/boot/testdir是两个分区,但都有同样的131132节点编号,见下图:)

Linux的文件管理(三)_第2张图片

wKioL1edTdTx3wvoAAAJnfu1l8A809.png-wh_50

但在同一分区下如果出现同样的节点编号,只能是同一个文件(硬链接产生指向同一个文件)。如下图,同一分区内有相同的节点编号,只能是同一个文件,使用硬链接指向:

Linux的文件管理(三)_第3张图片


5、链接数:

Linux的文件管理(三)_第4张图片


二、目录:

  文件引用一个是inode

  人是通过文件名来引用一个文件

  一个目录是目录下的文件名和文件inode号之间的映射

Inode table:

  Linux的文件管理(三)_第5张图片

 

三、cprmmvinode

   在CP的命令:分配一个空闲的inode号,在inode表中生成新条目;在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件

 

  rm命令:链接数递减,从而释放的inode号可以被重用;把数据块放在空闲列表中;

删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

 

如果mv命令的目标和源在相同的文件系统,作为mv命令:

用新的文件名创建对应新的目录项;删除旧目录条目对应的旧的文件名;

不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动;如果目标和源在一个不同的文件系统,mv相当于cprm

 

、硬链接和软链接

  硬链接: 创建硬链接会增加额外的记录项以引用文件,对应于同一文件系统上一个物理文件,每个          目录引用相同的inode号,创建时链接数递增。


  删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数;

    当链接数为零时,该文件被删除;

          不能跨越驱动器或分区

  

  使用格式:# ln file [linkname]

 Linux的文件管理(三)_第6张图片

   

   软链接:一个符号链接指向另一个文件,ls -l的显示链接的名称和引用的文件,一个符号链接的         内容是它引用文件的名称

可以对目录进行,可以跨分区,指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

           

   使用格式:# ln –s file[linkname]

 

五、查看文件的内容:

  文件可以包含多种类型的数据;检查文文件类型,然后确定适当的开放命令或应用程序使用。


  格式:file[options] ...Option:

  选项使用:-b列出文件辨识结果时,不显示文件名称。

-c详细显示指令执行过程,便于排错或分析程序执行

-f列出文件中文件名的文件类型

-F使用指定分隔符号替换输出文件名后默认的”:”分隔符

-i输出mime类型的字符串

-L查看对应软链接对应文件的文件类型

-z尝试去解读压缩文件的内容

--help显示命令在线帮助

eg:file -b 的使用如下图:

  wKioL1edTxKySO7AAAAMXageOKk213.png-wh_50 

 

查看一个系统分区下每个分区最多能支持的inode节点号(在Linux文件系统,inode节点编号是不支持拓展的):

命令:# df -i

  Linux的文件管理(三)_第7张图片

 

### 查看用户:getent  passwd

 更改用户:sed –I ‘s/chesfer/che/g’/etc/passwd

      sed –I ‘s/chesfer/che/g’ /etc/shadow

      sed –I ‘s/chesfer/che/g’ /etc/gshadow

      sed –I ‘s/chesfer/che/g’ /etc/group

 

watch –n 1 ‘df –I /boot’  一秒扫描一次

for id in {1..19456} do touch/boot/f$id;echo f$id is created;done  指定生成一定数量的空文件(测试消耗inode节点号)

###