更新后要不要重启
安全更新常常只替换磁盘上的库文件,已经在跑的进程仍然映射着旧版本,漏洞窗口并未真正关闭。判断依据很直接:看进程当前映射的库文件是否已被替换。RHEL 系用 needs-restarting,Debian 系用 needrestart,两者都会告诉你是否需要重启整机、以及哪些服务需要重启。
基本信息
| 适用平台 | RHEL 系与 Debian 系分别提供对应工具 |
|---|---|
| RHEL 命令 | needs-restarting -r 判断是否需重启,-s 列出需重启的服务 |
| Debian 命令 | needrestart -b 输出机器可读摘要,-r l 只列服务 |
| 权限要求 | 需要 root,因为要读取所有进程的映射信息 |
典型使用场景
- 打完安全补丁后确认是否还需要安排重启窗口
- 内核更新后核对哪些服务在等重启才生效
- 变更评审前评估本次补丁的影响面
- 自动化补丁流程里作为最后一步的检查项
- 排查「已经升级了但漏洞仍被检出」的原因
RHEL 系
RHEL 系
sudo dnf install -y dnf-utils # 提供 needs-restarting 命令
sudo needs-restarting -r # 返回 1 表示需要重启系统
sudo needs-restarting -s | head # 列出需要重启的服务
echo $? # 脚本里可据此决定后续动作
sudo dnf needs-restarting -r # 部分版本也可通过 dnf 直接调用Debian 系
Debian 系
sudo apt install -y needrestart
sudo needrestart -b # 机器可读摘要,适合脚本
sudo needrestart -r l # 列表模式:只列需要重启的服务
sudo needrestart -k # 一并检查内核与本机状态
sudo systemctl list-units --state=running | head # 核对关键服务是否在列表中工具与判据对照
| 项目 | RHEL 系 | Debian 系 |
|---|---|---|
| 判断服务 | needs-restarting -s | needrestart -r l |
| 判断整机 | needs-restarting -r(返回码 1 表示需要) | needrestart 摘要中的内核提示 |
| 安装来源 | dnf-utils 包 | needrestart 包 |
| 判据本质 | 进程映射的库文件已被替换 | 同左,另外追踪内核与库版本 |
| 脚本适配 | 看退出码 | 看 -b 输出字段 |
判断结论只反映「文件的版本与内存中不一致」,不代表服务立刻不可用。生产环境按变更窗口安排重启,优先重启受影响的服务而不是整机。