如何确定 rhel 7 机器在内核更新后是否需要重新启动

如何确定 rhel 7 机器在内核更新后是否需要重新启动

众所周知,内核升级后(上RHEL 7),需要重新启动才能更新内核版本

所以重启后我们可以通过以下方式验证内核版本uname -r

由于我们使用脚本进行内核升级,

我们想验证什么是正确的方法,机器需要重新启动作为内核升级的结果

只是要提一下,该reboot过程不会在内核升级过程之后立即进行,并且可能在内核升级之后几个月进行

因此,我们希望找到正确的验证来表明机器RHEL7需要重新启动

uname -r一种方法是通过版本进行验证,并将该版本与已安装的 rpm 进行比较,如下所示rpm -qa | grep kernel

但也许我们可以得到关于更好的指示或更好的验证的建议

答案1

众所周知,内核升级后(在 RHEL 7 上),需要重新启动才能更新内核版本

不,它已经升级了;但是要运行新内核,如果您想使用它,则需要加载新内核。由于 Linux 不是很酷,唯一的方法就是重新启动。

yum附带一个工具可以告诉您是否任何您安装/升级的东西需要重新启动。很容易找到,它的名字叫needs-restarting。调用它-r以获得有意义的返回代码。


1 从技术上讲,您可以 kexec 进入新内核,但正在运行的进程、打开的文件、文件系统网络……都不会生存,因此您最终会处于损坏状态。

答案2

/usr/bin/needs-restarting(在 yum-utils 中)可以为您完成此操作。

(例如,needs-restarting -r || shutdown +5 "Rebooting post patching"

Usage:  
    needs-restarting: Report a list of process ids of programs that started  
                    running before they or some component they use were  updated.  
  
  
Options:   
   -h, --help        show this help message and exit  
   -u, --useronly    show processes for my userid only  
   -r, --reboothint  only report whether a full reboot is required  
                     (exit code 1) or not (exit code 0)  
   -s, --services    list the affected systemd services only  

相关内容