升级不需要重新启动 – 在实践中发生了什么样的问题?

如果更新,在重新启动之前会发生什么样的问题? 如果您使用无人参与升级来应用安全修补程序,则会发生这种情况特别频繁。

共享对象被replace,所以程序可能会失去同步。

在重新启动之前可以安全多久?

澄清:

我的意思是“程序不能同步”,就是一个二进制文件具有共享对象的早期版本,而新启动的实例具有共享对象的较新版本。 在我看来,如果这些版本不兼容,那么这两个二进制文件可能不能正确地互操作。

这是否经常在练习中发生?

更多解释:

我所得到的更多的是安装程序通常启动/停止依赖于共享库的服务,以便他们将获得新版本的API。 如果他们得到所有的依赖,那么你可能是好的。 但是人们经常看到安装程序缺less依赖关系吗?

如果编写一个服务来兼容所有以前的API版本,那么这不会是一个问题。 但我怀疑这往往是没有完成的。

如果有内核更新,尤其是如果有不兼容的ABI更改,我不知道如何获得所有的依赖关系。 我正在寻找关于是否以及如何“翻转”以及人们是否已经在实践中观察到这一点的经验,无论是内核更新还是库/软件包更新。

是的,这可能应该已经被放入ServerFault …

任何时候都有一个可执行文件的两个版本。 内存中的一个和磁盘中的一个。

当你更新时,磁盘上的一个被替换; 记忆中的是旧的。 如果它是一个共享对象,它将保持在那里,直到每个使用它的应用程序都退出; 如果它是内核,它将一直保持在那里,直到你重新启动。

坦率地说,如果这是一个安全漏洞,那么这个漏洞会一直存在,直到你加载(希望)补丁的版本。 所以如果它是一个内核,在你重启之前你是不安全的。 如果是共享对象,则重新启动可确保安全。

基本上,我会说这取决于漏洞的类别。 如果是安全的,重新启动受影响的东西。 否则,好吧,除非这个bug对你有不利影响,否则我不用担心。 如果是内核,我总是重新启动。