首页/系统/Linux 运维命令速查/判断哪些服务需要重启

判断哪些服务需要重启

安全更新后「装了新库,进程还在跑旧库」:needs-restarting -r(RHEL) / needrestart(Debian)告诉你要不要重启、哪些服务要重启。

Linux 运维命令速查系统更新于 2026-10-13

更新后要不要重启

安全更新常常只替换磁盘上的库文件,已经在跑的进程仍然映射着旧版本,漏洞窗口并未真正关闭。判断依据很直接:看进程当前映射的库文件是否已被替换。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 -sneedrestart -r l
判断整机needs-restarting -r(返回码 1 表示需要)needrestart 摘要中的内核提示
安装来源dnf-utils 包needrestart 包
判据本质进程映射的库文件已被替换同左,另外追踪内核与库版本
脚本适配看退出码看 -b 输出字段
判断结论只反映「文件的版本与内存中不一致」,不代表服务立刻不可用。生产环境按变更窗口安排重启,优先重启受影响的服务而不是整机。

易错点

  • 只看服务不看内核:内核更新必须整机重启才会生效,容易被漏掉
  • 核心基础库更新后几乎所有服务都提示需重启,一次性全重启风险很高,应分批并保留回滚方案
  • 把「需要重启」当成故障处理立刻重启,可能打断业务高峰期,应先评估窗口
  • 容器场景里基础镜像更新不影响正在运行的容器,别把宿主机结论直接套用到容器上

数据来源与参考

  • RHEL 文档:needs-restarting
  • man 1 needrestart(Debian)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌