广州总校区切换校区
复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图片
news

新闻资讯

什么是i-节点

发布时间: 2022-10-27

什么是i-节点?在Linux(和UNIX)系统中,文件系统内的每个文件都有一个相关的i-节点,里面保存着除了文件名以外的所有文件信息。i-节点里面有什么呢?

文件类型

在Linux(和UNIX)系统中,file的含义非常笼统:文件系统内的任何东西(并且与之相关的i-节点)都可以是一个文件,包括我们已经提到过的常规文件和目录、将要提到的符号连接和设备节点、与进程间通信相关的几个比较抽象的定义(这些概念已超出本教程教学范围)。

表1列出了可能出现的文件类型。

表1 Linux(UNIX)文件类型



上述7种文件类型使用同样的i-节点结构,所以它们拥有共同的属性:所有者身份、权限、修改时间等,当使用ls -l命令列出文件时,文件类型由第一个字符识别,该字符应用上表第二列中的缩写标记。

Note

文件这个术语在Linux(和UNIX)系统中经常出现,并有两层含义:当用在“每个文件都有一个i-节点”一类的句子中时,文件指上述表格中任何一种类型的文件。当用在“head命令只对文件起作用,对目录不起作用”一类的句子中时,文件指一种具体的含有数据的文件。通常情况下,文件的含义在上下文中是明确的。需要时就会使用常规(普通)文件(regular file)加以区别,见下句里的用法:“ls -l命令用连字符(-)标识常规文件”。

所有者身份和权限

前面教程里讲过,每个(常规)文件和目录都有组所有者、用户所有者和可能的三组访问权限(即读取、写入和执行)。因为这种信息保存于文件的i-节点里面,而且所有文件的i-节点结构相同,所以这7种类型的文件控制谁对它们有访问权的机制是一样的,即分别使用chmod、chgrp和chown命令。

当使用ls -l命令列出文件时,第一列显示权限(也显示文件类型);第三列显示用户所有者;第四列显示组所有者。

时间信息

每个i-节点保存与文件相关的三种时间信息,通常叫做atime、ctime和mtime,如表2所示。这些时间分别记录着一个文件最后一次被访问(读取)、改变或修改的时间。

表2 文件时间信息



改变(change)和修改(modify)有什么不同?当一个文件的数据改变时,就说该文件被修改了,mtime得到更新。当一个文件的i-节点改变时,就说该文件被改变了,ctime得到更新。修改一个文件(改变mtime)也引起ctime的更新。而仅仅阅读一个文件(改变atime)不会引起ctime的改变。

那么文件创建的时间呢?

人们经常错把UNIX系统的ctime当做文件的“创建时间”。说来奇怪,传统UNIX(Linux)系统不记录文件创建的时间。有些人认为缺少创建时间是UNIX系统文件设计中的一个缺陷。

文件长度和大小

i-节点用两种度量记录文件大小:文件的长度(即文件数据的实际字节数)和大小(即所占用的磁盘空间量)。由于文件在磁盘上保存的底层信息不同,两种度量有所不同。

一般来说,文件的大小每次以字节块(通常是4千字节)为单位增加,而文件数据增加时,其长度以单个字节为单位递增。而使用ls -l命令时,文件长度(字节数)在第五列里显示。当使用ls -s命令时,第五列里显示的则是文件大小(千字节数)。

链接数

最后,i-节点记录文件的链接数,也就是引用该文件的dentry数(文件名)。通常常规文件只有一个文件名,链接数也是1。然而,我们会发现情况并非总是这样。当使用ls -l命令列出文件时,第二列显示的就是链接数。

上一篇: 物理地址概述

下一篇: DHCP服务的工作原理

<
在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!