夜火博客

清理ubuntu老旧内核的脚本

2010-03-17
技术文章
Ubuntu
内核
脚本Script
3分钟
447字

夜火我对内核的东西也是一知半解的,不敢随便乱删旧内核,骨头写的这个清理ubuntu老旧内核的脚本很实用,转之~,给和我一样不知道怎么删除ubuntu老旧内核的朋友借鉴借鉴。话说骨头的站好像有问题,暂时无法访问。

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

Terminal window
1
sudo aptitude purge ~ilinux-image-.*(!`uname -r`)

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

1
#!/bin/sh
2
# 清理ubuntu的老内核
3
# by bones7456
4
# http://li2z.cn
5
CURRENT="`uname -r | awk -F"-" '{print $1"-"$2}'`"
6
HEADERS=""
7
IMAGES=""
8
for HEADER in `dpkg --get-selections | grep ^linux-headers |
9
grep -vE "(generic|386|virtual)" | awk '{gsub(/linux-headers-/,"",$1);print $1}'`
10
do
11
    if [[ "$CURRENT" < "$HEADER" ]]
12
    then
13
        echo "正在运行的内核不是最新的。 $CURRENT < $HEADER"
14
        echo "Running kernel is not the newest. $CURRENT < $HEADER"
15
        exit 1
25 collapsed lines
16
    else
17
        [[ "$CURRENT" != "$HEADER" ]] && {
18
            HEADERS="${HEADERS} linux-headers-${HEADER}"
19
            IMAGE="`dpkg --get-selections | grep ^linux-image |
20
                grep "${HEADER}" | awk '{print $1}'`"
21
            IMAGES="${IMAGES} $IMAGE"
22
        }
23
    fi
24
done
25
26
if [[ x"$HEADERS" == x"" ]]
27
then
28
    echo "没有要清理的老内核."
29
    echo "No old kernel need to clean."
30
    exit 0
31
fi
32
CMD="sudo apt-get purge $HEADERS $IMAGES"
33
echo "$CMD"
34
if [ "$1" == "-e" ]
35
then
36
    sh -c "$CMD"
37
else
38
    echo "请确定以上命令是否正确,然后输入 $0 -e 来执行以上命令。"
39
    echo "Be sure this command is right, then type $0 -e to execute."
40
fi
本文标题:清理ubuntu老旧内核的脚本
文章作者:夜火
发布时间:2010-03-17