Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果我们升级Debian衍生发行版中使用的程序或软件,会发生什么?_Linux_Ubuntu_Filesystems_Debian - Fatal编程技术网

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

Linux 如果我们升级Debian衍生发行版中使用的程序或软件,会发生什么?,linux,ubuntu,filesystems,debian,Linux,Ubuntu,Filesystems,Debian,我想知道当我们升级一个包含一些当前正在使用的文件的包时会发生什么 当文件系统中的文件已经更改时,为什么旧程序仍然工作良好?在运行“智能升级”之类的程序时,有什么机制可以防止程序崩溃 此外,如何在文件仍在使用时安全地更改文件 我在谷歌上搜索了一段时间,但答案似乎离题了。如果正在运行的程序有一个已更新的打开文件句柄(例如,指向库或可执行文件),则在释放文件句柄之前,打开的文件实际上不会从文件系统中回收 这与通过创建一个文件并立即取消链接来拥有“匿名”临时文件的机制相同。。。您仍然可以读取/写入未链接

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

当文件系统中的文件已经更改时,为什么旧程序仍然工作良好?在运行“智能升级”之类的程序时,有什么机制可以防止程序崩溃

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


我在谷歌上搜索了一段时间,但答案似乎离题了。

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


这与通过创建一个文件并立即取消链接来拥有“匿名”临时文件的机制相同。。。您仍然可以读取/写入未链接的文件,但其他人无法查看或访问该文件。

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

这与通过创建一个文件并立即取消链接来拥有“匿名”临时文件的机制相同。。。您仍然可以读取/写入未链接的文件,但其他人无法查看或访问该文件。

从内核将运行的可执行文件(或
mmap
-ed文件)视为一个文件

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

回想一下,只有当inode没有引用时(既不是从某个目录中,也不是作为打开的文件描述符或正在运行的可执行文件或-ed文件从内核中),才会在文件系统(即磁盘)上删除inode

顺便说一句,当您升级libc时,打包系统为您提供了重新启动一些守护进程的功能。

一个正在运行的可执行文件(或
mmap
-ed文件)将从内核中作为

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

回想一下,只有当inode没有引用时(既不是从某个目录中,也不是作为打开的文件描述符或正在运行的可执行文件或-ed文件从内核中),才会在文件系统(即磁盘)上删除inode


顺便说一句,当您升级
libc
时,打包系统会让您重新启动一些守护进程…

“因为Linux不是Windows。”因为Linux不是Windows。