刚接触 CentOS 的新手,是不是遇到过这种情况:在 CentOS 7 上用的查看内核版本命令,换到 CentOS 9 上就报错;好不容易跑出结果,一串数字字母混在一起,根本不知道啥意思?做开发的小周就跟我吐槽过,他在 CentOS 6 上用 uname -a 能查到内核,换了 CentOS 8,同样的命令输出结果格式都变了,差点误以为服务器出了问题。其实啊,不同 CentOS 版本的内核查看命令大同小异,但确实有几个版本专属的细节,结果里的每个数字也都有讲究。今天就把 CentOS 6/7/8/9 能用的查看命令列出来,详解结果里的每个部分啥意思,附几个新手常踩的坑,看完你也能轻松搞定,一起往下看吧!
基础问题:为啥非得查内核版本?不同版本命令还不一样?
其实啊,内核就像 CentOS 的 “发动机”,服务器能不能装某个软件、会不会有漏洞,都和内核版本有关。比如小周想装 Docker,就得确认内核版本在 3.10 以上,查都不查就装,肯定报错。
那为啥不同 CentOS 版本命令可能不一样?主要是 CentOS 在升级时,内核管理工具会更新,有些旧命令虽然还能用,但输出结果可能变了;有些新命令则是为了更方便,比如 CentOS 8 开始支持的 hostnamectl 命令,不光能看内核,还能看系统版本,一举两得。
小周第一次不知道这些,在 CentOS 9 上死磕 CentOS 6 的老命令,折腾半小时没结果,后来才发现换个命令就行。他说 “早知道不同版本有区别,就不用走这么多弯路了”。
分版本详解:CentOS 6/7/8/9 能用的命令,附实操效果
(1)CentOS 6:这两个命令最常用,老服务器别记错
CentOS 6 虽然老,但很多企业还在用来跑旧系统,查看内核版本主要靠这俩命令:
- uname -r:输入后直接显示内核版本号,比如 “2.6.32-754.el6.x86_64”,小周说这个命令最直接,他记不住其他的,就靠这个混;
- cat /proc/version:输出更详细,会带编译信息,比如 “Linux version 2.6.32-754.el6.x86_64 (builder@c6b9.bsys.dev.centos.org)”,适合需要看编译时间的场景。
不过要注意,CentOS 6 默认没装太多工具,有些复杂命令可能用不了,小周试过一个带参数的命令,直接提示 “command not found”,后来换了 uname -r 才搞定。
(2)CentOS 7:多了个好用的命令,结果更直观
CentOS 7 在命令上兼容大部分 CentOS 6 的命令,还多了个更方便的:
- uname -r:同样能用,输出类似 “3.10.0-1160.el7.x86_64”,和 CentOS 6 格式差不多;
- hostnamectl:这个是 CentOS 7 新增的,不仅能看内核版本,还能看系统版本,输出里有一行 “Kernel: Linux 3.10.0-1160.el7.x86_64”,小周觉得这个更清楚,一眼能看到内核和系统信息。
他提醒说,CentOS 7 里如果用 cat /proc/version,结果和 CentOS 6 类似,但有时候会少点细节,想简单看内核,uname -r 足够了。
(3)CentOS 8:命令变化不大,但要注意系统特殊性
CentOS 8 虽然生命周期短,但很多企业在用,查看命令和 7 差不多,不过有个小坑:
- uname -r:输出 “4.18.0-348.el8.x86_64”,格式更规范,数字部分更清晰;
- cat /boot/config-$(uname -r):这个命令能看内核配置,但 CentOS 8 里可能需要 root 权限,小周第一次用普通用户执行,提示 “权限不够”,切换 root 后才成功。
他说 CentOS 8 对权限要求更严,用命令时最好加 sudo,省得报错。
(4)CentOS 9:命令最简洁,结果信息更全
CentOS 9 作为新版本,命令更友好,新手容易上手:
- uname -r:输出 “5.14.0-70.22.1.el9_0.x86_64”,版本号里直接带了系统版本(el9_0),一看就知道是 CentOS 9;
- rpm -q kernel:这个命令能看安装的所有内核版本,适合需要切换内核的场景,小周在测试不同内核兼容性时常用,能列出所有可用内核。
不过他发现,CentOS 9 里 uname -a 的输出比旧版本长,信息更多,但新手其实看 uname -r 就够了,不用纠结多余的内容。
结果含义:输出的一串字符,到底啥意思?
不管用哪个命令,输出结果基本是 “数字。数字。数字 – 后缀.x86_64” 这种格式,比如 “3.10.0-1160.el7.x86_64”,小编拆开来给你说:
- 前面的 “3.10.0”:是内核主版本号,3 是主版本,10 是次版本,0 是修订号,数字越大说明内核越新;
- 中间的 “1160”:是 CentOS 对内核的补丁号,数字越大,说明补丁越新,修复的漏洞越多;
- 后面的 “el7”:el 代表 Enterprise Linux,7 就是 CentOS 7,对应系统版本;
- 最后的 “x86_64”:说明是 64 位内核,现在的服务器基本都是这个,32 位的很少见了。
小周第一次看到 “4.18.0-348.el8.x86_64”,还以为 “348” 是错误代码,后来才知道是补丁号,他说 “搞懂这些,看日志都轻松多了”。
命令用不了?3 个常见问题及解决办法
(1)提示 “command not found”,不是命令错了
小周在 CentOS 6 上用 hostnamectl,就遇到这问题,后来才知道 CentOS 6 根本没有这个命令。解决办法:
- 换个命令试试,比如用 uname -r,这个命令在所有 CentOS 版本里基本都有;
- 要是必须用某个命令,可能需要安装工具,比如 CentOS 6 装 hostnamectl 得先装 systemd,但过程有点复杂,新手不建议折腾。
(2)结果空白或乱码,多半是权限或系统问题
普通用户在某些目录下执行命令,可能权限不够,输出空白。解决办法:
- 加 sudo,比如 “sudo cat /proc/version”,输入用户密码就行;
- 要是乱码,可能是系统语言设置问题,输入 “LANG=en_US.UTF-8” 切换到英文,再执行命令,小周在中文系统里遇到过,切换后就正常了。
(3)不同命令结果不一样,以 uname -r 为准
有时候用不同命令查,结果版本号稍微有差异,比如 rpm -q kernel 列出的是安装版本,uname -r 是当前运行版本。这很正常,因为系统可能安装了多个内核,当前用的是其中一个。小周建议,新手想知道正在用的内核版本,认准 uname -r 就行,最准。
不过话说回来,具体不同命令获取内核信息的底层机制,可能需要更深入的 Linux 内核知识,小编也说不太清,大概是因为不同命令读取的系统文件不一样吧。
小编的心里话
CentOS 查看内核版本的命令,其实核心就那几个,uname -r 在所有版本里都能用,新手先记住这个准没错。不同版本的差异,主要是新增了一些更方便的命令,比如 CentOS 7 及以上的 hostnamectl,用起来更直观。
看懂结果也不难,记住主版本、补丁号、系统版本这几个部分,基本能判断内核是否符合软件要求。小周现在查内核版本,几秒钟就能搞定,他说 “刚开始觉得难,多用几次就熟了,别被一串字符吓住”。
希望新手别纠结于记所有命令,先掌握 1-2 个常用的,遇到问题换着试试,慢慢就摸清规律了,毕竟实践出真知嘛!