如何查看Debian上安装的Linux内核版本?

如何查看Debian上安装的Linux内核版本?

对于 DevOPS 脚本,升级 Debian 系统后,我需要检查 Debian 上当前最新安装的 Linux 内核版本,并将其与正在运行的版本进行比较 ( uname -r)。

解决这个问题的最简单方法是什么?

如果需要,如何自动重新启动系统?

答案1

正如问题中所指出的,当前运行的内核可以通过以下方式获取:

uname -r

输出如下所示:

4.19.0-8-amd64

相反,最新内核包的版本需要从包管理器中获取。假设amd64架构和标准安装,我们可以检查linux-image-amd64元包的依赖关系,它始终指向最新的内核包:

dpkg-query -f '${Package}: ${Depends}\n' -W linux-image-amd64

输出如下所示:

linux-image-amd64: linux-image-4.19.0-8-amd64

要将其放入 shell 脚本中,需要两个额外的步骤。首先,我们应该通过以下方式自动确定架构:

dpkg --print-architecture

输出如下所示:

amd64

其次,我们需要linux-image-从内核包名称中去掉前缀:

echo linux-image-4.19.0-8-amd64 | sed s/^linux-image-//

输出如下所示:

4.19.0-8-amd64

将所有这些放在一起并添加正确的 shell 脚本引用,我们得到:

if [ "$(uname -r)" != "$(dpkg-query -f '${Depends}' -W "linux-image-$(dpkg --print-architecture)" | sed s/^linux-image-//)" ]; then
  reboot
fi

答案2

以通用方式执行此操作的最佳方法是在此评论中解释了

复制并粘贴此脚本,make 可执行并运行它将给出您预期的结果。

相关内容