needrestart 检查在库升级后需要重启哪些守护进程。其灵感来源于 debian-goodies 软件包中的 checkrestart。
在 ex/ 目录中有一些钩子脚本(用于与 apt 和 dpkg 配合使用。这些脚本会在任何软件包安装/升级后调用 needrestart。
needrestart 应可在 GNU/Linux 上运行。由于 /proc/<pid>/maps 不显示已移除的文件链接,它在 GNU/kFreeBSD 上的功能有限。
needrestart 支持但并非必须使用 systemd(自 v0.6 起可用)。如果使用 systemd,您也应使用 libpam-systemd。如果 needrestart 检测到 systemd,它会假定已使用 libpam-systemd,并依赖 cgroup 名称来检测进程属于用户会话还是守护进程。如果您不使用 libpam-systemd,则应在 needrestart.conf 中将 $nrconf{has_pam_systemd} 设为 0。
如果 systemd 不可用或未返回服务名称,needrestart 会使用钩子来识别相应的 System V init 脚本。随附的钩子支持以下软件包管理器:
service 命令用于运行传统的 System V init 脚本。
needrestart 采用基于提供用户界面的 perl 软件包的模块化方法。随附以下前端:
needrestart 0.8 引入了过时内核检测功能。自 needrestart 3.5 起,可以过滤内核镜像文件名(在 Raspberry Pi 上需要)。
在 needrestart 3.0 中,为 Intel CPU 添加了处理器微码更新检测功能。自 needrestart 3.5 起,增加了 AMD CPU 支持。
needrestart 0.8 引入了解释器扫描功能。解释器不仅映射二进制(共享)对象,还会使用纯文本源文件。解释器检测会尝试检查过期的源文件,因为它们也可能包含安全问题。这仅是启发式方法,可能无法检测出所有相关的源文件。随附以下解释器扫描器:
needrestart 2.1 可检测某些容器技术。如果某个进程属于容器的一部分,则可能无法使用 Sys-V/systemd 重启它。
有专门的 perl 软件包(NeedRestart::CONT::*)用于实现容器检测与重启。随附以下容器检测器:
needrestart 可以按批处理模式运行,以便在其他程序或脚本中使用其结果。
此外还有nagios 插件模式可用。