古いカーネルの自動削除

ubuntaの次の更新後、grubのブートリストの増加に完全に苦しんでいることに気付きました(これは、代替OSがリストの下部に残っている場合に特に当てはまります)。 手動で削除するのはどういうわけか間違っているので、自動的な方法について混乱することにしました。



ハブで目的のトピックを見つけることができませんでした。インターネットで調べたところ、 レシピが見つかりましたが、そのマイナス点は一時ファイルの使用でしたが、それはあまり好きではありませんでした。 いくつかの変換を行った後、もう少し単純化したバージョン(sudo経由で実行)を入手しました。



注意(UPD) :このコードではなく、投稿の最後にあるコードを使用することをお勧めします。 状況によっては、現在のカーネルを削除して、トピックを元の形式に保つためだけに残すことができます。



#!/bin/bash



kernels=`dpkg-query -l linux-image-* | grep ^ii | grep -v eg | head -n -1 | gawk -F" " '{ print $2 }'`



for i in $kernels

do

echo "Removing kernel: "$i

# sudo apt-get -y remove $i

done








シェル用のスクリプトの記述に関する私の知識はゼロと見なすことができるため、どこかで重大な間違いを犯した場合に備えて、削除した行を直接コメントアウトしました:)ホーカーのコードの信頼性に関する意見を表明する要求-そしてコメントを削除します さらに、このコードを1つのコマンドに単純化できるように思えます(残念ながら、私は成功しませんでした)。



誰かが役に立つといいな。



説得力のあるリクエスト :コマンドを初めて起動する前に、末尾の「| xargs apt-get -y purge」なしでコマンドを実行し、削除するカーネルの正しいリストを取得してください。



UPD :Habrausers MessieValdikSSは、より正確で単一行のオプションを提案しました。



dpkg -l linux-image-* | grep ii | grep -v [az]-generic | grep -v `uname -r` | awk '{ print $2 }' | xargs apt-get -y purge







UPD2 :Steve_32のubucleanerスクリプトのオプション:



dpkg -l | grep ii | awk '{print $2}' | grep -E 'linux-(image|headers|ubuntu-modules|restricted-modules)' | grep -vE 'linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)' | grep -v $(uname -r|sed 's/-*[az]//g'|sed 's/-386//g') | xargs apt-get -y purge






All Articles