获取当前运行的内核版本号,最常用且最靠谱的办法就是用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 默认项没更新,都可能导致你误判系统状态。