最常用且最可靠的方式是使用uname -r命令获取当前运行的内核版本号,输出为纯版本字符串如6.10.2-damon,不含主机名或架构等冗余信息,适合脚本解析;该结果仅反映实际运行中的内核,而非已安装未启用的版本。

直接用 uname -r 获取运行中的内核版本号
这是最常用也最可靠的方式,输出就是纯版本字符串,不带主机名、架构等干扰信息,适合脚本解析或快速比对。比如输出 6.10.2-damon 或 5.15.0-122-generic,其中数字和连字符部分就是内核发行标识。
注意:uname -r 只反映当前正在运行的内核,不是已安装但未启用的旧内核。如果你刚升级内核但没重启,这里看到的仍是旧版本。
用 cat /proc/version 查看编译细节和 GCC 版本
这个文件提供更底层的信息,包括内核版本、构建主机名、GCC 编译器版本。适合排查驱动兼容性或确认是否为定制内核。
- 第一段中
Linux version X.X.X-后面的内容即内核版本 - 后面紧跟着的
gcc version能帮你判断编译环境,比如某些内核模块要求特定 GCC 版本才能加载 - 如果输出里有
mockbuild或buildd字样,说明是发行版官方构建;如果是自定义主机名,可能是手动编译或第三方内核
通过 hostnamectl | grep "Kernel:" 在 systemd 系统中快速定位
适用于 RHEL 8+、Ubuntu 20.04+、CentOS Stream 等现代发行版。它不依赖 lsb_release 是否安装,也不像 /proc/version 那样冗长。
执行 hostnamectl 后整屏输出可能很长,直接用 grep "Kernel:" 过滤更稳妥。注意:在非 systemd 系统(如旧版 CentOS 6)上该命令不可用,会提示 Command not found。
检查 /boot/vmlinuz-* 列出所有已安装内核文件
这个方法不依赖当前运行状态,而是从磁盘上读取实际存在的内核映像,适合确认系统是否残留旧内核、是否存在多版本共存,或准备卸载无用内核。
- 执行
ls /boot/vmlinuz-*,输出类似/boot/vmlinuz-5.4.0-135-generic /boot/vmlinuz-6.8.0-45-generic - 每个文件名末尾的字符串就是对应内核版本号,可直接用于
grubby --set-default或apt remove linux-image-* - 注意:某些云镜像或精简系统可能把内核放在
/boot/efi/EFI/*/下,这时需额外检查 EFI 分区
真正容易被忽略的是:uname -r 和 /boot/vmlinuz-* 显示的版本可能不一致——前者是“当前跑着的”,后者是“磁盘上装着的”。升级内核后忘记重启,或者 GRUB 默认项没更新,都可能导致你误判系统状态。


















