脚本清理ubuntu的老内核:有错误求修正!!

sh/bash/dash/ksh/zsh等Shell脚本
回复
Points
帖子: 83
注册时间: 2010-02-19 16:13

脚本清理ubuntu的老内核:有错误求修正!!

#1

帖子 Points » 2012-04-21 14:49

代码: 全选

#!/bin/sh
#
# 清理ubuntu的老内核
#sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
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
运行时一闪没。。 :em06
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 脚本清理ubuntu的老内核:有错误求修正!!

#2

帖子 aerofox » 2012-04-21 16:31

用 bash -v 执行看看。
Points
帖子: 83
注册时间: 2010-02-19 16:13

Re: 脚本清理ubuntu的老内核:有错误求修正!!

#3

帖子 Points » 2012-04-22 13:49

aerofox 写了:用 bash -v 执行看看。

代码: 全选

~$ bash -v PurgeOldKernel
#!/bin/sh
#
# 清理ubuntu的老内核
#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

#sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
CURRENT="`uname -r | awk -F"-" '{print $1"-"$2}'`"
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
dpkg --get-selections | grep ^linux-headers | grep -vE "(generic|386|virtual)" | awk '{gsub(/linux-headers-/,"",$1);print $1}'
 
if [[ x"$HEADERS" == x"" ]]
then
    echo "没有要清理的老内核."
    echo "No old kernel need to clean."
    exit 0
fi
没有要清理的老内核.
No old kernel need to clean.
~$ 
出来这个是什么意思呀,就是显示一下脚本? :em20
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 脚本清理ubuntu的老内核:有错误求修正!!

#4

帖子 aerofox » 2012-04-22 21:42

看来你之前“运行一闪没”是用鼠标双击运行的吧?
现在是告诉你“没有要清理的老内核”了。
回复