确定更新内核是否需要重新启动?

确定更新内核是否需要重新启动?

我正在运行一台在 CentOS 上运行 cPanel(最新版​​本)的服务器,并且我将其设置为使用 yum 自动更新。由于需要重新启动才能更新内核(以及可能的其他内容),我想知道是否有任何方法可以确定是否需要重新启动?

编辑:服务器是一个 VPS,运行在 OpenVZ 上。由于 OpenVZ 的工作方式,没有/boot/vmlinuzyum list installed kernel不起作用。

答案1

您可以尝试以下 bash 脚本这个答案来自服务器故障。

#!/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

答案2

首先,我们打印出正在运行的内核版本:

# uname -r
2.6.32-71.29.1.el6.i686

好的,我们必须修补:

# yum 更新内核*

获取 kexec 工具:

# yum 安装 kexec-tools

现在我们获取最后安装的内核版本并将其放在 var 中:

#latestkernel=`ls -t /boot/vmlinuz-* | sed“s/\/boot\/vmlinuz-//g”|头-n1`

# 回显 $latestkernel
2.6.32-220.4.1.el6.i686

现在我们需要将新的内核版本加载到内存中:

# kexec -l /boot/vmlinuz-${latestkernel} --initrd=/boot/initramfs-${latestkernel}.img --append="`cat /proc/cmdline`"

最后,我们可以发出重置命令:

# kexec -e

..而且..哇,我们失去了系统! ..嗯,不完全是。

系统将“在不重新启动的情况下重新启动”......类似于快速重新启动,而不执行 BIOS 检查(并且您知道完整的系统重新启动可以持续多长时间)。

# uname -r
2.6.32-220.4.1.el6.i686

有效!

  • 请注意,内核重置也会执行连接重置,同时重置您的正常运行时间,因此,如果您正在寻找在安全修补时授予正常运行时间记录的东西,那么,这不适合您。

相关内容