3

删除文件时发生了些什么事情

 3 years ago
source link: https://www.lujun9972.win/blog/2018/05/01/%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E6%97%B6%E5%8F%91%E7%94%9F%E4%BA%86%E4%BA%9B%E4%BB%80%E4%B9%88%E4%BA%8B%E6%83%85/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

删除文件时发生了些什么事情

当删除文件时,直观上能看到的就是文件名从目录中消失了,但是这一现象下,系统内部实际上做了很多事情。

具体的实现,根据文件系统的不同而有所不同。在ext3/4下,大致会发生下面几件事情

  1. 当文件被删除时,存有该文件名和i节点号的目录项会被标注成未使用。 一般情况下是把索引号设置为0,这样文件名不再与任何文件信息相关联了。
  2. 由于目录项被更新,因此会更新父目录本身的最后读取时间、最后修改时间和最后状态变更时间.
  3. i节点中的引用数减1,若i节点号的引用数降为0,则i节点在分配表中标记为未使用. i节点中的文件size,uid,gid,指向数据块的指针(Direct,Indirect,Double indirect,Triple Indirect Block Pointers)都会被清为0.
  4. 若有进程打开了该文件而没有关闭,则该被删除的文件依然处于使用状态。 这时真正删除文件的状态会被延迟到文件不再使用后进行。 处于这个状态下的文件还可以通过 /proc/$进程ID/$文件描述符 来找到
  5. 被删除文件的数据块在数据块的分配表中标记为未使用状态,但它的内容被保留了下来。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK