我试图了解什么是 inode。然而,维基百科的这段话让我感到困惑:
使用 inode 文件系统安装新库很简单。一个正在运行的进程可以访问一个库文件,而另一个进程替换该文件,创建一个新的 inode,并且新文件将存在一个全新的映射,以便随后尝试访问该库的尝试获得新版本。此工具消除了重新启动以替换当前映射库的需要。因此,在更新程序时,最佳做法是先删除旧的可执行文件,然后为更新版本创建一个新的 inode,这样任何执行旧版本的进程都可以不受干扰地继续进行。
在 Unix 风格的文件系统中,系统知道的关于文件的一切(除了它的名字)都存储在 inode 或 inode 指向的位置。这包括其内容、所有权、修改日期和权限。Unix 目录条目只是一个名称和指向 inode 的指针,并且仅在进程打开文件时使用。一旦文件打开,目录项就无关紧要了。
这意味着可以删除当前打开的文件而不会干扰正在读取或写入该文件的进程。删除文件只是删除目录条目。inode 一直存在,直到所有进程都关闭了文件,此时 inode 和所有其他文件数据将被删除(或至少标记为不再使用并可回收)。这由称为“链接计数”的字段处理,它是 inode 结构的一部分。
因此,如果要升级正在运行的程序正在使用的共享库,只需删除库文件即可。由于程序已经打开了文件,因此不会受此影响。然后将新版本的库安装为一个新文件(它会获得一个新的 inode)。
归档时间: |
|
查看次数: |
810 次 |
最近记录: |