歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 清理Ubuntu老內核的小腳本

清理Ubuntu老內核的小腳本

日期:2017/2/28 16:39:08   编辑:Linux教程

Ubuntu用久了,升級了幾次內核以後,就免不了需要清理一下老的內核,畢竟一套內核就有170多M的空間呢。但是每次都打一堆字來清理也煩了。雖然Ubuntu 命令技巧(這裡再羅嗦幾句:如果還有Ubuntuer沒看過這個,強烈建議看一遍。)裡有刪除舊內核的命令,而且就一行:

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

但是我卻不是很喜歡,因為這這個沒有把linux-headers-xxx刪除掉。
於是自己寫了個繁的,需要的可以自己保存,以便不時之需。

#!/bin/sh
# 清理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
Copyright © Linux教程網 All Rights Reserved