Linux · 2020年11月24日

Centos 7 删除无用的内核

少说废话一句话系列:

执行命令:

yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))

去自动筛选并删除当前无用的系统内核版本。

序、扯淡

最近真的是忙到爆炸,其实手里有几个非常有意思的议题,但无奈因为忙的不行不能专门展开来写个博客。所以这次也是为了每月一水而开的教程。

一、背景

不知道各位有没有注意过这么个问题,CentOS系统用的久了,随着我们的日常更新,每次启动时启动项就会慢慢多起来,就像下面这样:

这是个什么情况呢?

二、原因

原因其实很简单,因为CentOS是一个主要面向服务器的Linux发行版,追求稳定性,对于升级内核这种“高风险”行为抱有谨慎的态度,为了给用户提供一个升级内核后因为各种各样的原因需要重新降级回到原先的内核版本的方法,CentOS在每次更新完内核后,并不会主动删除旧内核(官方源,部分第三方源在使用yum更新内核后,会自动删去旧内核),只是修改引导使得从新内核启动。这样就可以使得用户在需要回退先前的内核版本时,只需要重启服务器并在启动时选择需要的内核版本就好了。

三、解决方案

其实如果只是个人用户,或者无所谓系统版本的用户,其实可以手动删除这些旧内核以便释放一些硬盘空间。

首先键入以下命令查看当前系统中所有已安装的内核版本:

rpm -qa | grep kernel

命令执行后,会输出当前系统中所安装的所有内核版本。

然后咱们看一下当前使用的内核版本是什么:

uname -r

嗯,是3.10.0-693.2.2.el7.x86_64。那这样就说明现在我的CentOS系统中kernel-3.10.0-514.el7.x86_64和kernel-3.10.0-514.26.2.el7.x86_64这两个内核是没有用的而且是可以删除的。

删除无用的内核可以用yum remove命令,不过要记得的是,在这里一定要带上具体的版本号:

yum remove kernel-3.10.0-514.el7.x86_64 kernel-3.10.0-514.26.2.el7.x86_64

确认无误后键入y并回车,yum会删除掉相应版本的内核。

四、合并一下?

上一章中讲了如何检查和删除多余的内核,但很多时候我们只希望能够删除内核就好了,不需要这么复杂的步骤,那么这里有一个非常方便的一行命令:

yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))

为了保险起见这个命令里,yum remove没有带-y参数,你可以根据输出再一次判断需要删除的内核版本是否正确。

一定要确认无误后再按y并回车!

五、写在最后

最近真的忙的不行,上个月本来要发篇文章的,后来硬是忙的忘记了。

之后我将努力的抽出时间,写一些高质量的博客,希望各位看官能够继续支持我。