Centos

確定是否需要重新啟動才能更新核心?

  • December 16, 2019

我正在執行一個使用 cPanel(最新版​​本)在 CentOS 上執行的伺服器,並且我將它設置為使用 yum 自動更新。由於需要重新啟動才能更新核心(可能還有其他事情),我想知道是否有任何方法可以確定是否需要重新啟動?

**編輯:**伺服器是一個 VPS,它在 OpenVZ 上執行。由於 OpenVZ 的工作方式,沒有/boot/vmlinuzyum list installed kernel沒有工作。

您可以從 ServerFault的這個答案中嘗試以下 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

首先,我們列印出正在執行的核心版本:

# unname -r
2.6.32-71.29.1.el6.i686

好的,我們必須修補:

# yum 更新核心*

獲取 kexec 工具:

# yum 安裝 kexec 工具

現在我們獲取最後安裝的核心版本並將其放在一個 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

..and..哇,我們失去了系統!..嗯,不完全是。

系統將“在不重新啟動的情況下重新啟動”......類似於快速重新啟動,無需執行 BIOS 檢查(並且您知道完整系統重新啟動可以持續多長時間)。

# unname -r
2.6.32-220.4.1.el6.i686

有效!

  • 請注意,核心重置也會執行連接重置以及重置您的正常執行時間,因此如果您正在尋找一些東西以在安全修補時授予您的正常執行時間記錄,那麼這不適合您。

引用自:https://unix.stackexchange.com/questions/79924