AlmaLinux 9:内核更新后要不要重启
在 AlmaLinux 9.8 真机(kernel 5.14.0-687.54.1.el9_8)上实际执行:uname -r、needs-restarting -r、needs-restarting、dnf needs-restarting、rpm -q kernel。日志:plans/content-expansion/evidence/logs/alma-reboot-policy.log。
「更新后返回 1」的场景未在本机触发(本机当前无需重启),该分支按命令语义与 dnf 文档说明。
判断工具:needs-restarting -r
Section titled “判断工具:needs-restarting -r”uname -rneeds-restarting -r; echo "rc=$?"5.14.0-687.54.1.el9_8.x86_64No core libraries or services have been updated since boot-up.Reboot should not be necessary.rc=0退出码就是答案:0 = 不需要重启,1 = 需要重启。它比较的是「自启动以来被更新过的、影响运行中系统的包」,不是「有没有装新包」。
装了旧内核不代表要重启
Section titled “装了旧内核不代表要重启”rpm -q kernel | tail -2kernel-5.14.0-427.13.1.el9_4.x86_64kernel-5.14.0-687.54.1.el9_8.x86_64本机装了两个内核(一个 9_4 的旧版本、一个正在运行的 9_8),needs-restarting -r 仍返回 0——旧内核留在盘上不等于需要重启,关键是你现在运行的是不是最新安装的那个。
服务级 vs 系统级
Section titled “服务级 vs 系统级”needs-restarting # 列出需要重启的服务dnf needs-restarting # dnf 子命令形式,语义相同前者输出「哪些服务需要重启」,后者是 dnf 子命令封装;两者都来自 yum-utils,不是 dnf-plugins-core。只重启服务能解决的,不必重启整机。
什么时候必须重启
Section titled “什么时候必须重启”| 更新内容 | 是否必须重启 |
|---|---|
| 内核(kernel) | 是(新内核要重启才生效) |
| glibc / systemd / openssl 等核心库 | 是(运行中的进程仍用旧库) |
| 普通用户态服务 | 否,重启对应服务即可 |
needs-restarting -r 返回 1 时,通常是前两类。
重启窗口怎么安排
Section titled “重启窗口怎么安排”needs-restarting -r || echo "需要安排重启"sudo dnf history list | head -3先看这轮更新装了什么(dnf history),再决定窗口;生产上配合负载均衡摘流、健康检查与回滚预案。不要用「更新完立刻重启」当默认动作,也不要长期不重启导致内核漏洞补丁不生效。
- 只看
dnf update成功:更新成功不代表漏洞已生效,内核/核心库要重启; - 用
needs-restarting(无 -r)判断整机:它列的是服务,不是「是否必须重启整机」; - 长期不重启:内核安全更新一直没生效。
练习:判断并安排一次重启
Section titled “练习:判断并安排一次重启”sudo dnf -y updateneeds-restarting -r; echo "rc=$?"needs-restartingsudo dnf history list | head -3检查:
- 记录
rc是 0 还是 1 rc=1时,能说出是内核还是核心库导致- 能列出需要重启的服务
- 能给出重启窗口与回滚方案
常见问题
needs-restarting -r 返回 0 就完全安全吗?
它只覆盖「已安装包对运行中系统的影响」,不覆盖配置漂移、证书过期等问题。安全补丁生效仍需确认相关服务或内核是否已加载新版本。
为什么装了新内核但没重启,漏洞还在?
运行中的还是旧内核。内核更新只有重启进入新内核才生效;这也是内核类 CVE 修复必须安排重启的原因。
能只重启服务不重启机器吗?
普通服务可以;内核与 glibc/systemd 这类核心组件不行,它们被所有进程共享,必须重启整机。
- 安装后核对:新装系统 7 项核对
- 内核与模块:
/kernel-modules/(Alma 站暂无此页) - 网络排查:网络不通的五层排查