众所周知,内核升级后(上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