我正在运行一台在 CentOS 上运行 cPanel(最新版本)的服务器,并且我将其设置为使用 yum 自动更新。由于需要重新启动才能更新内核(以及可能的其他内容),我想知道是否有任何方法可以确定是否需要重新启动?
编辑:服务器是一个 VPS,运行在 OpenVZ 上。由于 OpenVZ 的工作方式,没有/boot/vmlinuz
也yum 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
有效!
- 请注意,内核重置也会执行连接重置,同时重置您的正常运行时间,因此,如果您正在寻找在安全修补时授予正常运行时间记录的东西,那么,这不适合您。