检查Linux内核版本的5种方法
方法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