web-dev-qa-db-ja.com

カーネルを更新するために再起動が必要かどうかを判断しますか?

CentOSとcPanel(最新バージョン)を実行するサーバーを実行していますが、yumを使用して自動的に更新するように設定しています。カーネルを更新するために再起動する必要があるので(そしておそらく他のものも)、再起動が必要かどうかを判断する方法があるかどうか疑問に思っていましたか?

編集:サーバーはVPSであり、OpenVZで実行されています。 OpenVZが機能する方法のため、/boot/vmlinuzはなく、yum list installed kernelも機能しません。

6
ub3rst4r

ServerFaultの this answer から次の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
9
j883376

まず、実行中のカーネルバージョンを出力します。

#uname -r 
 2.6.32-71.29.1.el6.i686 
 
 OK、パッチを当てる必要があります:
 
#yum update kernel * 
 
 kexecツールを取得:
 
#yum install kexec-tools 
 
次に、最後にインストールされたカーネルバージョンのリリースを取得し、var:
 
#latestkernel = `ls -t/boot/vmlinuz- * |に置きます。 sed "s/\/boot \/vmlinuz-// g" | head -n1` 
 
#echo $ 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チェックを実行せずに高速再起動のようなものです(そして、システム全体が最後に再起動できる時間はわかっています) 。
 
#uname -r 
 2.6.32-220.4.1.el6.i686 

出来た!

  • カーネルリセットは、接続リセットも実行時間のリセットと同様に実行することに注意してください。セキュリティパッチの適用中にアップタイムレコードを付与するために何かを検索している場合、これは適切ではありません。
2
Ashish