Ubuntu 下面清理无效内核的 脚本

Ubuntu 下面的内核经常升级,一段时间以后就很多了,浪费空间,网上搜索了一个脚本,用了下,感觉还可以。

原文是指定的Shell #!/bin/sh, 这个在Ubuntu下面是不能编译通过的,要要手动指定为bash 才行,主要是默认的sh不同造成的,不是什么大问题.

文件暂时命名成 Linux_Clean.sh吧

首先赋予执行权限

chmod +x Linux_Clean.sh

尝试执行

./Linux_Clean.sh

如果没有错误则执行

./Linux_Clean.sh -e

建议执行脚本之前执行

dpkg --get-selections|grep linux

看看自己有多少Linux内核

执行完成后继续执行

dpkg --get-selections|grep linux

估计会很有成就感的

下面是脚本原文,复制黏贴即可

#!/bin/bash
# 清理ubuntu的老内核
# by bones7456
# http://li2z.cn
CURRENT="`uname -r | awk -F"-" '{print $1"-"$2}'`"
HEADERS=""
IMAGES=""
for HEADER in `dpkg --get-selections | grep ^linux-headers | \
	grep -vE "(generic|386|virtual)" | awk '{gsub(/linux-headers-/,"",$1);print $1}'`
do
	if [[ "$CURRENT" < "$HEADER" ]]
	then
		echo "正在运行的内核不是最新的。 $CURRENT < $HEADER"
		echo "Running kernel is not the newest. $CURRENT < $HEADER"
		exit 1
	else
		[[ "$CURRENT" != "$HEADER" ]] && {
		HEADERS="${HEADERS} linux-headers-${HEADER}"
		IMAGE="`dpkg --get-selections | grep ^linux-image | \
		grep "${HEADER}" | awk '{print $1}'`"
		IMAGES="${IMAGES} $IMAGE"
		}
	fi
done

if [[ x"$HEADERS" == x"" ]]
then
	echo "没有要清理的老内核."
	echo "No old kernel need to clean."
	exit 0
fi
CMD="sudo apt-get purge $HEADERS $IMAGES"
echo "$CMD"
if [ "$1" == "-e" ]
then
	sh -c "$CMD"
else
	echo "请确定以上命令是否正确,然后输入 $0 -e 来执行以上命令。"
	echo "Be sure this command is right, then type $0 -e to execute."
fi

发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注