dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}'
ঠিক যেমন মাল্টে পরামর্শ দিয়েছে। সম্পর্কিত কার্নেল ফাইলগুলি তালিকাভুক্ত করে।
egrep '[0-9]+\.[0-9]+\.[0-9]+'
এছাড়াও সংস্করণ নম্বর অনুসন্ধান করে কেবল কার্নেল ফাইলগুলি বাছাই করার নিরাপদ উপায় হিসাবে মাল্টে পরামর্শ দিয়েছেন।
যেহেতু আমরা সম্ভবত ইমেজ এবং শিরোলেখ প্যাকেজ উভয়কেই তালিকাভুক্ত করছি, প্যাকেজটির নামকরণ ভিন্ন হতে পারে তাই আমাদের কাছে এই খসড়া কাজটি রয়েছে যা সাজানোর জন্য প্রয়োজনীয় awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}'
ফলাফলটি মূল প্যাকেজের নামের নীচের মত সংস্করণ নম্বর সহ একটি নতুন কলামে রয়েছে:
$ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}'
3.11.0-23 linux-headers-3.11.0-23
3.11.0-23 linux-headers-3.11.0-23-generic
3.11.0-24 linux-headers-3.11.0-24
3.11.0-24 linux-headers-3.11.0-24-generic
3.11.0-26 linux-headers-3.11.0-26
3.11.0-26 linux-headers-3.11.0-26-generic
3.11.0-23 linux-image-3.11.0-23-generic
3.11.0-24 linux-image-3.11.0-24-generic
3.11.0-26 linux-image-3.11.0-26-generic
3.8.0-35 linux-image-3.8.0-35-generic
3.11.0-23 linux-image-extra-3.11.0-23-generic
3.11.0-24 linux-image-extra-3.11.0-24-generic
3.11.0-26 linux-image-extra-3.11.0-26-generic
3.8.0-35 linux-image-extra-3.8.0-35-generic
বর্তমানে চলমান চিত্রের চেয়ে কোনও নতুন চিত্র আনইনস্টল করা রোধ করতে এখন আমাদের তালিকাটি অবশ্যই বাছাই করতে হবে। sort -k1,1 --version-sort -r
আমাদের এই প্রদান:
$ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}' | sort -k1,1 --version-sort -r
3.11.0-26 linux-image-extra-3.11.0-26-generic
3.11.0-26 linux-image-3.11.0-26-generic
3.11.0-26 linux-headers-3.11.0-26-generic
3.11.0-26 linux-headers-3.11.0-26
3.11.0-24 linux-image-extra-3.11.0-24-generic
3.11.0-24 linux-image-3.11.0-24-generic
3.11.0-24 linux-headers-3.11.0-24-generic
3.11.0-24 linux-headers-3.11.0-24
3.11.0-23 linux-image-extra-3.11.0-23-generic
3.11.0-23 linux-image-3.11.0-23-generic
3.11.0-23 linux-headers-3.11.0-23-generic
3.11.0-23 linux-headers-3.11.0-23
3.8.0-35 linux-image-extra-3.8.0-35-generic
3.8.0-35 linux-image-3.8.0-35-generic
আমাদের বর্তমান এটি sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"`
প্রদান করে বর্তমান এবং আরও নতুন কার্নেল ফাইলগুলি সরিয়ে ফেলুন:
$ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}' | sort -k1,1 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"`
3.11.0-23 linux-image-extra-3.11.0-23-generic
3.11.0-23 linux-image-3.11.0-23-generic
3.11.0-23 linux-headers-3.11.0-23-generic
3.11.0-23 linux-headers-3.11.0-23
3.8.0-35 linux-image-extra-3.8.0-35-generic
3.8.0-35 linux-image-3.8.0-35-generic
awk '{print $2}'
আমরা যা চাই ঠিক তা পেতে এখন আমরা যুক্ত প্রথম কলামটি সরিয়ে ফেলুন :
$ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}' | sort -k1,1 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"` | awk '{print $2}'
linux-image-extra-3.11.0-23-generic
linux-image-3.11.0-23-generic
linux-headers-3.11.0-23-generic
linux-headers-3.11.0-23
linux-image-extra-3.8.0-35-generic
linux-image-3.8.0-35-generic
এখন আমরা প্যাকেজ ম্যানেজারকে স্বয়ংক্রিয়ভাবে সবকিছু মুছে ফেলার এবং গ্রাবটিকে পুনরায় কনফিগার করার জন্য এটি খাওয়াতে পারি:
আমি প্রথমে একটি শুকনো রান করার পরামর্শ দিই (যদিও আপনার স্ক্রিপ্টিংয়ের জন্য যদি আপনার বিশাল পরিবেশ থাকে তবে এটি ব্যবহারিক নাও হতে পারে)
dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}' | sort -k1,1 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"` | awk '{print $2}' | xargs sudo apt-get --dry-run remove
এখন যদি সবকিছু দেখতে ভাল লাগে তবে প্রকৃতপক্ষে এটিকে সরিয়ে দিন:
dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | awk 'BEGIN{FS="-"}; {if ($3 ~ /[0-9]+/) print $3"-"$4,$0; else if ($4 ~ /[0-9]+/) print $4"-"$5,$0}' | sort -k1,1 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"` | awk '{print $2}' | xargs sudo apt-get -y purge
আবার এই "ওয়ান-লাইনার" এর সম্পূর্ণ বিন্দুটি বর্তমানে চলমান কার্নেলের চেয়ে কেবল ওল্ডার কার্নেলগুলি সরিয়ে ফেলতে হবে (যে কোনও নতুন ইনস্টল করা কার্নেলগুলি এখনও উপলব্ধ)
ধন্যবাদ আমাকে জানতে দিন যে এটি আপনার পক্ষে কীভাবে কাজ করে এবং যদি আপনি এটি উন্নতি করতে পারেন!