没啥意思的站点

清理ubuntu老内核的小脚本

ubuntu用久了,升级了几次内核以后,就免不了需要清理一下老的内核,毕竟一套内核就有170多M的空间呢。但是每次都打一堆字来清理也烦了。虽然Ubuntu 命令技巧(这里再罗嗦几句:如果还有ubuntuer没看过这个,强烈建议看一遍。)里有删除旧内核的命令,而且就一行:

sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)

但是我却不是很喜欢,因为这这个没有把linux-headers-xxx删除掉。
于是自己写了个繁的,需要的可以自己保存,以便不时之需。

#!/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

13 评论

  1. 不错的东东,前排留名

  2. 呵呵,不是有 Ubuntu Tweak 帮你清理么……

  3. 为虾米if后面的框框要加个套?

  4. 好东西,纳入我的脚本库。

  5. 一行脚本搞定了啦~

    dpkg -l linux*2.6* | grep ii | grep -E 'linux-headers|linux-image' | grep -v `uname -r | cut -d- -f1,2` | cut -d' ' -f3 | xargs sudo apt-get purge
  6. 保存了,不错,

  7. 理工大linux群,76392717
    欢迎加入我们,这一个自由与开放的Linux社区,也是我们交流与学习的圣殿。

    • 呃,你也不要多次留同样内容的言啊,不然可是会被判为spam的哦。
      PS: linuxer更喜欢irc等方式,QQ群可能不是最好的选择哦。

  8. 太强了!!!太厉害了!!好佩服!!!

清理Debian内核和头文件的脚本 « Adam's进行回复 取消回复