如何自动删除我不使用的所有其他内核?
所以,这是我的情况:
- 使用不同版本的 Ubuntu / CentOS
- 自动更新开启 -> Linux 下载了许多新的内核版本
- 现在我想删除所有其他内核版本,除了我当前正在使用的版本
代码:
#find out current kernel version:
uname -r
#check which versions are downloaded to computer
dpkg --get-selections | grep linux-image
#delete desired kernel
sudo apt-get purge [KERNEL]
#autoremove
sudo apt-get autoremove
一台 Linux 中很容易有超过 15 个内核,而我必须经历超过 50 个 Linux。
答案1
在 Ubuntu 上,您可以使用purge-old-kernels
purge old kernel 来安装它:
适用于 ubuntu 16.04
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F430BBA5
sudo add-apt-repository ppa:byobu/ppa
sudo apt-get update
sudo apt-get install byobu
您也可以在不添加以下内容的情况下安装它ppa
:sudo apt-get install byobu
对于低于 16.04 的 Ubuntu 版本
sudo add-apt-repository ppa:bikeshed/ppa
sudo apt-get update
sudo apt-get install bikeshed
运行以下命令以保留最新的 2 内核:
sudo purge-old-kernels
您可以指定n
要保留的内核数量:
sudo purge-old-kernels --keep n
n=1
:
sudo purge-old-kernels --keep 1
在centOS上安装yum-utils
包:
yum install yum-utils
要保留最新的n
内核,请运行:
package-cleanup --oldkernels --count=n
n=1
:
package-cleanup --oldkernels --count=1
答案2
对于 Centos 8 及以上版本,您可以使用以下命令:
dnf remove --oldinstallonly
这将删除所有旧版本的内核。当你想要拥有时使用仅最新的安装的内核的发行版本。
答案3
请注意,此命令会删除主要版本 4 的所有内核映像和标头,但不会删除正在运行的内核映像和标头。
apt purge $(dpkg-query -W -f='${binary:Package}\n' 'linux-image-4*' 'linux-headers-4*' | grep -v $(uname -r))
答案4
您可以尝试以下命令。在执行 apt-get purge 之前,只需仔细检查 grep 的输出以不包含当前的内核版本
dpkg --list | grep linux-image | awk '{print $2}' | grep -v linux-image-`uname -r` | xargs apt-get purge