不重启安装补丁并不推荐,因为会带来不一致问题。想象一下你有个程序 A 执行到中途把自己 fork 成几个 worker 来执行,此时在 fork 之前或者中途程序 A 的文件因为安装补丁被替换了,那之后会发生什么行为可没人能预料到。又或者有多程序共享了某一个库或者配置文件,结果因为安装补丁导致他们使用的版本不相同,又会导致另外的问题。 当然跟 Linux 加载可执行文件不锁定文件也有关系,不过 macOS 加载可执行文件跟 Linux 一样不会锁定文件,也不是照样不支持不重启系统安装补丁。 另外 Windows 虽然加载可执行文件的时候会锁定文件导致无法更新文件,但是 Windows 是支持热补丁的,只不过是 Windows Server Azure 版专享: https://learn.microsoft.com/en-us/windows-server/get-started/hotpatch
dobelee
165 天前
别说打补丁了,rm -rf 都可以。而 Win 会锁定打开的文件。
wheat0r
165 天前
Linux 存在需要安装的补丁吗?
fox0001
165 天前
我认为 Linux 的文件系统起了很大作用。详细可以查查 Linux inode 。
Linux 的文件内容修改后,文件名不变,但其 inode 更新,文件内容写入新的硬盘存储空间。正在运行的程序,拿着旧 inode ,可以读取到旧版文件(也有可能程序文件已读入内存),所以文件修改后一般不影响程序运行。服务的配置文件修改后,需要重启服务,一般就是根据文件名获取到新的 inode ,从而读取到修改后的配置。
bitdepth
164 天前
kernel 除非是 module 的 security bug 否則也是要重啟好不好 另外 linux kernel 是有 living patch 不過不是很好用就是了
fpk5
164 天前
因为服务器大多数运行 Linux ,关机会有很大的影响,所以这些公司(尤其是做 Cloud 的公司)有动力去开发不关机更新的内核补丁。Windows 和 macOS 这种普通用户的系统有什么必要开发这种功能?
V28a19cc
164 天前
1. Windows Server Azure Edition 和 Windows 11 24H2 26100 都支持 hotpatch 热更新。 2. 对于大部分用户来说这个功能没必要,反倒是定期重启能解决大多数问题。
msg7086
164 天前
因为 Windows 内核会锁定文件,要删除文件并安装新版本一般需要先关闭才能操作。 对普通应用程序来说需要完全关闭程序,对系统来说就是重启系统。 macOS 不清楚。