如果我们升级在Debian派生的发行版中使用的程序或软件会发生什么?

时间:2014-01-27 20:04:35

标签: linux ubuntu filesystems debian

我想知道当我们升级包含当前正在使用的某些文件的软件包时会发生什么。

为什么旧程序在文件系统中的文件已被更改时仍能正常运行?什么是阻止程序崩溃的机制,例如" aptitude upgrade"正在运行?

此外,如何在文件仍在使用时安全地更改文件?

我已经搜索了一段时间,但答案似乎是偏离主题的。

2 个答案:

答案 0 :(得分:2)

如果正在运行的程序有一个已更新的打开文件句柄(例如库或可执行文件),则在文件句柄释放之后,实际上不会从文件系统中回收打开的文件。

这是一种机制,允许您通过创建文件来拥有“匿名”临时文件,并立即取消链接...您仍然可以读取/写入未链接的文件,但没有其他人可以查看或访问文件。

答案 1 :(得分:2)

正在运行的可执行文件(或mmap - ed文件)从内核中查看为inode

我猜测包管理器(例如dpkg调用的apt-get)正在使用rename(2)unlink(2),因此当前运行的可执行文件保持相同的inode。

回想一下,在文件系统-i.e上删除了一个inode。在磁盘上 - 仅当它没有引用时(既不是来自某个目录;也不是来自内核作为打开的文件描述符或正在运行的可执行文件或mmap(2) - ed文件)。

BTW,当您升级libc时,打包系统会让您重启一些守护进程......