root@server1:~> needs-restarting -r ; echo $?
Core libraries or services have been updated:
openssl-libs -> 1:1.0.1e-60.el7_3.1
systemd -> 219-30.el7_3.9
Reboot is required to ensure that your system benefits from these updates.
More information:
https://access.redhat.com/solutions/27943
1
LAST_KERNEL=$(rpm -q --last kernel | perl -pe 's/^kernel-(\S+).*/$1/' | head -1)
CURRENT_KERNEL=$(uname -r)
if [ $LAST_KERNEL != $CURRENT_KERNEL ]
then
echo "It is time to Reboot!"
else
echo "There is nothing to do!"
fi
https://access.redhat.com/discussions/3106621#comment-1196821
关于将已安装的内核与正在运行的内核进行比较:
希望有帮助!
您可以将 uname -a 的输出与已安装的内核包列表进行比较
在“是否需要重新启动”方面有助于查看的一件事是,是否有任何文件已被更新删除/替换,但旧文件仍被活动进程加载/使用。
基本上,当 YUM 更新某个进程正在使用的文件时,该文件本身可能已被标记为删除,但该进程继续使用旧文件,因为它具有旧文件 inode 的打开文件描述符。
获取仍在使用的旧文件数量的命令:
该命令将为您提供文件计数。
使用它来查看实际使用的文件:
该命令将在 YUM 更新的盒子上产生类似于以下内容的输出:
uname -a
对比rpm -q kernel
和needs-restarting
从yum-utils
检查正在运行的内核是否是最新的。
如果不是,请检查系统是否在内核安装后重新启动。
如果不是,请重新启动。
我知道这个问题已经得到解答,人们已经发布了有关检查更新内核和已删除文件的信息,但我最近编写了一个脚本来检查这两者。如果检测到任何一种情况,则重新启动计划为 +30 分钟。
2020-07-15 更新
自从最初编写此答案以来,我已经改进和更新了脚本。它在 github 上可用:https ://github.com/qth/jutil/blob/master/rbc
这是我的 alexm 代码版本。你可以这样做:
install.log install.log.syslog yum.log 你检查这个地方 什么都得到了新的 rpm 得到了安装