验证正在运行的内核与 Ubuntu 中最新安装的内核是否匹配

Art*_*nov 4 ubuntu kernel software-updates unattended-upgrades

unattended-upgrades在 Ubuntu 中会自动安装包括内核在内的安全更新,但不会自动重新启动(没关系,我不需要/想要自动重新启动)。

我怎样才能知道是否the running kernel = the latest installed kernel

我可以通过以下方式获取当前的内核版本:

$ uname -r
5.4.0-104-generic
Run Code Online (Sandbox Code Playgroud)

最新安装的内核可以通过以下方式找到:

$ dpkg -s linux-image-generic | awk '/Version:/{print $2}'
5.4.0.104.108
Run Code Online (Sandbox Code Playgroud)

这两个不匹配。我可以使用 bash 魔法来比较这两个字符串(然后.108需要继续 - 为什么?),但我更喜欢使用标准的东西。

小智 7

以下是我使用的内容,应该适用于不同的发行版。

#!/usr/bin/env bash

HIGHEST_KERNEL=`find /boot/vmlinuz-* | sort -V | tail -n 1 | sed 's|.*vmlinuz-||'`
RUNNING_KERNEL=`uname -r`
echo "Highest Kernel: $HIGHEST_KERNEL | Running Kernel: $RUNNING_KERNEL"
if [ "$HIGHEST_KERNEL" != "$RUNNING_KERNEL" ]; then
  echo "** Reboot Required **"
  exit 1
fi
Run Code Online (Sandbox Code Playgroud)