如何从命令行检查 RHEL 或 CentOS 是否需要重新启动?

如何从命令行检查 RHEL 或 CentOS 是否需要重新启动?

我在几台没有 GUI 的机器上使用 CentOS 和 Red Hat Enterprise Linux。如何检查最近安装的更新是否需要重新启动?在 Ubuntu 中,我习惯检查是否/var/run/reboot-required存在。

答案1

https://access.redhat.com/discussions/3106621#comment-1196821

不要忘记,您可能需要因为核心库更新而重新启动,至少如果它是 glibc 的话。(此外,更新后可能需要重新启动服务)。

如果您安装了该yum-utils包,您可以使用名为的命令needs-restarting

您可以使用它来检查是否由于内核或核心库更新而需要完全重启(使用选项-r),或者需要重新启动哪些服务(使用选项-s)。

needs-restarting -r0如果不需要重新启动则返回,1如果需要,则返回,因此它非常适合在脚本中使用。

一个例子:

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

答案2

关于比较已安装的内核与正在运行的内核:

#!/bin/bash
LAST_KERNEL=$(rpm -q --last kernel | perl -pe 's/^kernel-(\S+).*/$1/' | head -1)
CURRENT_KERNEL=$(uname -r)

test $LAST_KERNEL = $CURRENT_KERNEL || echo REBOOT

希望有帮助!

答案3

您可以将 uname -a 的输出与已安装的内核包列表进行比较

答案4

uname -arpm -q kernelneeds-restarting……相比yum-utils

相关内容