随着linux系统的更新,内核会不断升级以修复漏洞和提升性能。然而,每次升级都会保留旧版本的内核,这些旧内核在大多数情况下已经不再需要,却会占用宝贵的磁盘空间,尤其是在小容量存储设备上,如 VPS 或嵌入式设备。因此,定期清理旧内核是维护系统的一项重要任务。
为什么需要删除旧内核?
-
释放磁盘空间
每个内核及其相关模块可能占用数百 MB 的磁盘空间,保留过多旧内核会浪费存储。 -
避免系统混乱
系统中存在多个内核版本可能导致引导菜单过于冗长,增加管理复杂度。 -
维护系统整洁
定期清理旧内核有助于保持系统文件结构清晰,便于后续的维护和升级。
需要注意的是,当前正在使用的内核必须保留,以确保系统能够正常运行。
手动删除旧内核的步骤
以下是删除旧内核的操作:
1. 确认当前使用的内核
在删除旧内核之前,首先需要确定当前系统正在运行的内核版本。使用以下命令:
uname -r
输出示例:
5.10.0-8-amd64
此命令显示了系统当前正在使用的内核版本。在后续删除过程中,务必保留此版本的内核。
2. 列出所有已安装的内核
执行以下命令列出系统中安装的内核版本:
dpkg -l | grep linux-image
输出例如:
ii linux-image-5.10.0-7-amd64 5.10.40-1 amd64 Linux 5.10 for 64-bit PCs
ii linux-image-5.10.0-8-amd64 5.10.46-2 amd64 Linux 5.10 for 64-bit PCs
这里显示了系统中已安装的所有内核包,您需要保留当前正在使用的内核(例如 5.10.0-8-amd64
),并删除其他旧版本(例如 5.10.0-7-amd64
)。
3. 删除旧内核
使用以下命令删除指定的旧内核:
sudo apt remove --purge linux-image-5.10.0-7-amd64
系统会提示您确认操作,输入 Y
并按回车键继续。
4. 清理系统未使用的包
在删除旧内核后,执行以下命令清理未使用的依赖包:
sudo apt autoremove -y
sudo apt autoclean
这些命令将释放更多的磁盘空间。
5. 更新引导程序配置
删除旧内核后,记得更新 GRUB 引导程序,以移除引导菜单中的旧内核选项:
sudo update-grub
至此,旧内核的手动清理完成。
编写脚本实现自动清理
手动操作虽然可行,但随着系统的使用,定期清理旧内核可能会变得繁琐。我们可以编写一个 Bash 脚本,自动完成清理工作。
以下是完整的脚本代码:
#!/bin/bash
# 获取当前正在使用的内核版本
current_kernel=$(uname -r)
echo "当前正在使用的内核版本: $current_kernel"
# 列出所有已安装的内核
installed_kernels=$(dpkg -l | grep linux-image | awk '{print $2}')
echo "已安装的内核版本:"
echo "$installed_kernels"
# 初始化一个变量来存储将被删除的内核版本
kernels_to_remove=""
# 遍历所有已安装的内核,排除当前内核
for kernel in $installed_kernels; do
if [[ $kernel == *"$current_kernel"* ]]; then
echo "保留当前使用的内核: $kernel"
else
echo "将删除旧内核: $kernel"
kernels_to_remove="$kernels_to_remove $kernel"
fi
done
# 检查是否有旧内核需要删除
if [[ -n $kernels_to_remove ]]; then
echo "开始删除旧内核..."
sudo apt remove --purge -y $kernels_to_remove
echo "旧内核删除完成。"
else
echo "没有旧内核需要删除。"
fi
# 清理系统的未使用包
echo "清理系统中未使用的包..."
sudo apt autoremove -y
sudo apt autoclean
# 更新引导程序配置
echo "更新引导程序配置..."
sudo update-grub
echo "操作完成!系统中仅保留了当前正在使用的内核。"
脚本功能
- 自动检测当前正在使用的内核版本。
- 列出所有已安装的内核版本。
- 排除当前使用的内核,删除其余内核。
- 清理未使用的依赖包和缓存。
- 更新引导程序配置。
使用步骤
-
创建脚本文件
打开终端并创建一个新文件:nano remove_old_kernels.sh
将上述代码粘贴到文件中,保存并退出(按
Ctrl+O
保存,Ctrl+X
退出)。 -
赋予脚本执行权限
chmod +x remove_old_kernels.sh
-
运行脚本
sudo ./remove_old_kernels.sh
脚本将自动完成删除旧内核的所有操作。
知乎: @张赐荣
赐荣博客: www.prc.cx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!