1
adrianzhang 165 天前
Linux 是微内核。
|
2
hronro 165 天前
Linux 是微内核?!
|
3
cJ8SxGOWRH0LSelC 165 天前 3
@adrianzhang #1 Linux 是宏内核
|
4
henix 165 天前 1
有些安全补丁安装完只需要重启相关服务就行了,不用重启系统,比如之前的 ssh 安全漏洞
|
5
adrianzhang 165 天前
@StinkyTofus 哦哦,打错。
|
6
adrianzhang 165 天前 2
刚才不知道在想什么。这个问题应回答 Linux 是松耦合系统。
|
7
vituralfuture 165 天前 via Android
因为可执行被加载到内存执行后可以写入该文件,进程的工作目录被其他进程删掉后也不会挂掉,以上都是因为 inode 的引用计数机制,只有引用计数降低到零才会真正删除 inode 。这也是为什么 rm 删全盘后 linux 还能活一段时间,关机后才会真的挂掉
要安装补丁,可以在服务仍然运行的时候安装,安装完成后,服务仍然使用的是旧版本,要让服务重新加载新版本,可以有两种做法 1. 重启服务 2. 给服务进程发送信号,让它重新加载动态库(假设补丁在动态库中) |
8
hez2010 165 天前 1
不重启安装补丁并不推荐,因为会带来不一致问题。想象一下你有个程序 A 执行到中途把自己 fork 成几个 worker 来执行,此时在 fork 之前或者中途程序 A 的文件因为安装补丁被替换了,那之后会发生什么行为可没人能预料到。又或者有多程序共享了某一个库或者配置文件,结果因为安装补丁导致他们使用的版本不相同,又会导致另外的问题。
当然跟 Linux 加载可执行文件不锁定文件也有关系,不过 macOS 加载可执行文件跟 Linux 一样不会锁定文件,也不是照样不支持不重启系统安装补丁。 另外 Windows 虽然加载可执行文件的时候会锁定文件导致无法更新文件,但是 Windows 是支持热补丁的,只不过是 Windows Server Azure 版专享: https://learn.microsoft.com/en-us/windows-server/get-started/hotpatch |
9
dobelee 165 天前
别说打补丁了,rm -rf 都可以。而 Win 会锁定打开的文件。
|
10
wheat0r 165 天前
Linux 存在需要安装的补丁吗?
|
11
fox0001 165 天前 via Android
我认为 Linux 的文件系统起了很大作用。详细可以查查 Linux inode 。
Linux 的文件内容修改后,文件名不变,但其 inode 更新,文件内容写入新的硬盘存储空间。正在运行的程序,拿着旧 inode ,可以读取到旧版文件(也有可能程序文件已读入内存),所以文件修改后一般不影响程序运行。服务的配置文件修改后,需要重启服务,一般就是根据文件名获取到新的 inode ,从而读取到修改后的配置。 |
12
bitdepth 164 天前
kernel 除非是 module 的 security bug 否則也是要重啟好不好
另外 linux kernel 是有 living patch 不過不是很好用就是了 |
13
fpk5 164 天前
因为服务器大多数运行 Linux ,关机会有很大的影响,所以这些公司(尤其是做 Cloud 的公司)有动力去开发不关机更新的内核补丁。Windows 和 macOS 这种普通用户的系统有什么必要开发这种功能?
|
14
V28a19cc 164 天前
1. Windows Server Azure Edition 和 Windows 11 24H2 26100 都支持 hotpatch 热更新。
2. 对于大部分用户来说这个功能没必要,反倒是定期重启能解决大多数问题。 |
15
msg7086 164 天前
因为 Windows 内核会锁定文件,要删除文件并安装新版本一般需要先关闭才能操作。
对普通应用程序来说需要完全关闭程序,对系统来说就是重启系统。 macOS 不清楚。 Linux 下可以直接删除原文件并安装新文件,然后再重启软件或者电脑就可以了。 |
16
MrKrabs 164 天前
ubuntu 可是拼命叫你重启
|
17
beginor 164 天前 via Android
但是很多补丁装完还是会提示重启的
|
18
Chad0000 164 天前 via iPhone
做到需要更大成本,让用户重启电脑很简单也没什么大的影响,所以这个热更新非必需。
|
19
villivateur 164 天前
Linux 更新内核的话本来也是要重启的啊,或者 systemd 之类的
|
20
NessajCN 164 天前
要看哪种补丁。编译进内核或者启动参数加载内核参数的模块更新还是要重启的。通过 sysctl 加载的运行时参数或者 systemd 管理的系统进程就可以不重启
|
21
shunia 164 天前 2
不说 Linux ,只说你看到 windows 让你重启,那说明都是确实要重启才能生效的补丁。如果不重启就生效的,你自然也感觉不到。
比如说偷偷给你安装安全管家可能就不需要你重启。 |
22
asm 164 天前
我记得某个大佬说过一个问题,win 上如何删除正在运行的程序的文件。
想了好久。。。 |
23
dbak 164 天前
linux 相关服务更新后会自动 reload 涉及到内核更新的也是提示要重启 reboot
|
24
listen2wind 164 天前
@dobelee 想起上次发包的时候,linux 上的包还在运行,就可以进行替换。而 windows 上的包在运行时无法被替换。
|
25
wushenlun 164 天前 via Android
换内核不要重启吗
|
26
dyllen 164 天前
我记得 linux 好像出过不用重启更新内核版本的功能。
|
27
libook 164 天前
这种就是有专门做就能支持。
前段时间听了一个技术分享会,某些品牌的商用 Linux 发行版可以做到内核的函数级别热补丁,旧函数执行完之后再次调用就是新函数了,估计只要不是一直 loop 的函数都可以这样打补丁。 |
28
Yanlongli 164 天前
这要看具体是什么功能以及拆分的深度。
理论上第三方软件都是热插拔,内置的软件也有些同样热插拔,但是可能存在占用问题,就推荐重启一劳永逸。 |
29
guo4224 164 天前
windows/macos 下的应用更新,也是不需要重启的,Linux 的 kernel 更新一样得重启。
|
30
cyp0633 164 天前
先问是不是吧,类似 livepatch 的东西我记得是业界很热门的一个话题,只不过可能对 downtime 苛刻的主要是 Linux 环境罢了
|
31
iminto 163 天前 via Android
你第一句话说的啥? Linux 能做到不重启系统安装安全补丁?
不能。 |
32
lucky85984 163 天前
win 现在有了热补丁了,听说可以不用重启更新,未经查证。官方说的
|
33
ExplodingFKL 163 天前
|
34
mmdsun 162 天前 via iPhone
|