最实用的方式是结合系统包管理器内置机制与定时任务实现安全可追溯的自动清理;需配置内核保留策略(如installonly_limit=2)、启用自动清理任务(随更新执行或cron每月运行)、同步清理关联文件与缓存,并验证回退保障。

最实用的方式是结合系统包管理器的内置机制与定时任务,实现安全、可追溯的自动清理。核心不在于“写脚本”,而在于配置好策略后让系统自己执行。
设置内核保留策略(永久生效)
这是自动化清理的基础。不同发行版配置位置略有差异:
-
CentOS/RHEL 7/8、Rocky/AlmaLinux:编辑 /etc/yum.conf(YUM)或 /etc/dnf/dnf.conf(DNF),确保含这一行:
installonly_limit=2
表示只保留最近安装的 2 个内核(含当前运行的),其余在下次yum update或dnf upgrade时自动被标记为可清理。 -
Debian/Ubuntu:无需额外配置,默认
apt autoremove --purge就会智能保留当前和上一个内核;如需更严格控制,可设置 APT 钩子或调整 /etc/apt/apt.conf.d/01autoremove-kernels 中的保留逻辑。
启用自动清理任务(按需触发)
策略设好后,还需让清理动作定期发生。推荐两种轻量方式:
-
随系统更新自动执行:在 yum/dnf 更新命令中直接加入清理参数。例如,将日常更新命令改为:
yum update -y && package-cleanup --oldkernels --count=2 --assumeyes
或 DNF:dnf upgrade -y && dnf autoremove --assumeyes -
用 cron 定期运行(建议每月一次):添加一行到 root 的 crontab:
0 2 1 * * /usr/bin/dnf autoremove -y --setopt installonly_limit=2 > /dev/null 2>&1
(CentOS 8+/RHEL 8+)
或 YUM 系统:0 2 1 * * /usr/bin/package-cleanup --oldkernels --count=2 --assumeyes > /dev/null 2>&1
同步清理关联文件与缓存
仅删内核包不够,/boot 下残留的 initrd、vmlinuz 和旧日志也占空间。可在同一任务中追加:
- 清理 YUM/DNF 缓存:
yum clean all或dnf clean all - 清理无用依赖:
yum autoremove -y或dnf autoremove -y - 截断或轮转大日志(避免填满 /var):
logrotate -f /etc/logrotate.conf或find /var/log -name "*.log" -mtime +30 -delete
验证与回退保障
自动化不等于放任。每次清理后建议快速确认:
- 检查是否仍保留至少两个可启动内核:
rpm -q kernel | sort -V | tail -n 2 - 确认当前内核未被误删:
uname -r输出应出现在上条结果中 - 查看 GRUB 默认项:
grubby --default-kernel,确保指向有效路径 - 保留一次完整备份(如
tar -czf /root/boot-backup-$(date +%F).tgz /boot)仅需几秒,但关键时刻能救命











