检查Linux内核版本的5种方法

时间:2020-01-09 10:37:02  来源:igfitidea点击:

方法1:使用uname检查Linux内核版本

uname是打印系统信息最方便的工具。

关于RHEL/CentOS/Fedora

在所提供的分配中,"uname"的输出将类似于

~]# uname -r
4.18.0-193.14.2.el8_2.x86_64

输出可以分为以下格式

<major_version>-<minor_version>-<release>.<architecture>

在这里,

  • 4.18.0是主要版本

  • 193.14.2是次要版本

  • el8_2是版本

  • x86_64是体系结构

要列出已安装的内核:

~]# rpm -q kernel
kernel-4.18.0-80.el8.x86_64
kernel-4.18.0-147.5.1.el8_1.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64

在SLES/OpenSuSE上

"uname"的输出与SLES版本不同,SLES版本又是SLES平台的内核版本。

# uname -r
3.0.101-108.81-default

你可以使用uname-a来获得更多关于内核版本、系统架构等的细节

# uname -a
Linux cc01-nds-ins 3.0.101-108.81-default #1 SMP Fri Nov 2 18:02:20 UTC 2016 (2208a0f) x86_64 x86_64 x86_64 GNU/Linux

要列出已安装的内核:

~ # rpm -q kernel-default
kernel-default-3.0.101-108.81.1

在Ubuntu/Debian上

在提供的发行版中,内核称为"linux镜像"。Ubuntu/Debian的内核版本是由各自的开发人员分配的,它们不遵循正常的命名语法或者标准。

从我的Ubuntu服务器输出:

# uname -r
5.0.0-23-generic

其中

  • 5是主要版本

  • 第二个字段中的0是次要版本

  • 第三个字段中的0是修补程序级别

  • 23 generic是开发者补丁级别,在我们的上下文中是由Ubuntu开发者分配的。

要列出可用的内核包,可以使用:

:~# dpkg --list | grep linux-image
ii  linux-image-5.0.0-23-generic        5.0.0-23.24~18.04.1       amd64        Signed kernel image generic
ii  linux-image-generic-hwe-18.04       5.0.0.23.80               amd64        Generic Linux kernel image

方法2:使用hostnamectl检查Linux内核版本

如果使用的是旧版本,则可能找不到此命令。hostnamectl可用于查询和更改系统hostname及相关设置。但它也会打印内核信息。

这个命令的输出在所有Linux发行版中都是相同的。

方法3:使用grubby检查Linux内核版本

grubby只在RHEL/CentOS/Fedora/SuSE发行版中提供。

例如 它还没有在Debian/Ubuntu中提供(在撰写本文时)。grubby是一个命令行工具,用于跨多个体系结构配置引导加载程序菜单项。

要列出默认内核版本:

~]# grubby --default-kernel
/boot/vmlinuz-4.18.0-193.14.2.el8_2.x86_64

要获得关于这个内核的更多信息,我们可以使用'grubby--info/boot/vmlinuz-4.18.0-193.14.2.el8\ u2.x86\ u64'。以下是我的服务器的输出:

方法4:使用引导日志消息检查Linux内核版本

4.1:使用dmesg

在大多数发行版中,我们使用"dmesg"来访问启动日志消息,其中还包含内核版本以及许多其他详细信息。

RHEL/CentOS/Fedora输出

~]# dmesg | grep "Linux version"
[ 0.000000] Linux version 4.18.0-193.14.2.el8_2.x86_64 ([email protected]) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Sun May 26 03:54:29 UTC 2017

Ubuntu/Debian的输出

~# dmesg | grep "Linux version"
[    0.000000] Linux version 5.0.0-23-generic (buildd@lgw01-amd64-030) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #24~18.04.1-Ubuntu SMP Mon May 29 16:12:28 UTC 2019 (Ubuntu 5.0.0-23.24~18.04.1-generic 5.0.15)

SLES输出

# dmesg | grep "Linux version"
[    0.000000] Linux version 3.0.101-108.81-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Fri Nov 2 18:02:20 UTC 2016 (2208a0f)

4.2:使用journalctl

在最近的Linux发行版中,我们使用了journalctl,它使我们在读取和访问日志消息方面更加灵活。

为了检查启动日志消息,我们使用-b开关和journalctl命令

RHEL/CentOS/Fedora输出

~]# journalctl -b | grep "Linux version"
Sep 18 11:50:55 server.example.com kernel: Linux version 4.18.0-193.14.2.el8_2.x86_64 ([email protected]) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Sun May 26 03:54:29 UTC 2017

Ubuntu/Debian的输出

~# journalctl -b | grep "Linux version"
Sep 18 11:50:51 deepak-VirtualBox kernel: Linux version 5.0.0-23-generic (buildd@lgw01-amd64-030) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #24~18.04.1-Ubuntu SMP Mon May 29 16:12:28 UTC 2019 (Ubuntu 5.0.0-23.24~18.04.1-generic 5.0.15)

目前我没有访问sles12或者更高版本的权限,因此我无法发布输出,但相同的命令将适用于任何高于sles12的SLES版本。

方法5:检查/proc/version的内容

前面在方法4中通过从引导日志文件中灰显"Linux version"得到的输出实际上是从/proc/version收集的。因此,如果我们不希望遍历日志文件,可以直接检查该文件的内容以获得Linux内核版本

RHEL/CentOS/Fedora输出

~]# cat /proc/version
Linux version 4.18.0-193.14.2.el8_2.x86_64 ([email protected]) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Sun May 26 03:54:29 UTC 2017

SuSE/OpenSuSE输出

# cat /proc/version
Linux version 3.0.101-108.81-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Fri Nov 2 18:02:20 UTC 2016 (2208a0f)

Ubuntu/Debian的输出

~# cat /proc/version
Linux version 5.0.0-23-generic (buildd@lgw01-amd64-030) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #24~18.04.1-Ubuntu SMP Mon May 29 16:12:28 UTC 2019