কেবলমাত্র পুরানো কার্নেলগুলি মুছতে ওয়ান-লাইনারের উপর চাপ দিন


23

/ বুট পার্টিশনে কীভাবে স্থান ফাঁকাতে হয় সে সম্পর্কে আমি প্রচুর থ্রেড দেখেছি এবং এটি আমার উদ্দেশ্যও। যাইহোক, আমি কেবল পুরানো কার্নেলগুলি মুছতে আগ্রহী এবং সেগুলির প্রতিটি নয়, বর্তমানের one

আমার ওয়ান-লাইনার হওয়ার সমাধান দরকার কারণ আমি পাপেট থেকে স্ক্রিপ্টটি চালাচ্ছি এবং আমার কাছে অতিরিক্ত ফাইল পড়ে থাকতে চাই না। এখন পর্যন্ত আমি নিম্নলিখিত পেয়েছি:

dpkg -l linux-* | awk '/^ii/{print $2}' | egrep [0-9] | sort -t- -k3,4 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"` | xargs sudo apt-get -y purge

আরও সুনির্দিষ্টভাবে বলতে গেলে, এই মুহুর্তে এটি যা করে তা হ'ল:

  • সমস্ত লিনাক্স * প্যাকেজ তালিকাভুক্ত করুন এবং তাদের নাম মুদ্রণ করুন।
  • বিপরীত ফলাফলটি ফিরে আসার সাথে কেবল নম্বরগুলির তালিকা তৈরি করুন এবং তাদের বাছাই করুন। এইভাবে, পুরানো কার্নেলগুলি সর্বশেষে তালিকাভুক্ত করা হয়েছে।
  • বর্তমান কার্নেলের পরে কেবল ফলাফলগুলি মুদ্রণ করুন
  • যেহেতু কিছু লিনাক্স {চিত্র, শিরোনাম} ফলাফল রয়েছে, তাই নিশ্চিত হয়ে নিন যে আমি আমার বর্তমান কার্নেলের সাথে সম্পর্কিত কোনও কিছুই মুছে ফেলব না
  • শুদ্ধ করার জন্য অ্যাপটিকে কল করুন

এটি কাজ করে, তবে আমি নিশ্চিত যে সমাধানটি আরও মার্জিত হতে পারে এবং এটি উত্পাদন পরিবেশের জন্য নিরাপদ, যেহেতু আমাদের অন্তত 20 সার্ভার উবুন্টু চালায়।

আপনার সময়ের জন্য ধন্যবাদ, আলেজান্দ্রো।


নেট থেকে পুরানো কিছু: tuxtweaks.com/2010/10/…
ব্যবহারকারী 68186

আপনি কীভাবে আপনার ওয়ান-লাইনার ব্যবহার করবেন, যদি এটি কোনও স্ক্রিপ্ট ফাইলে সংরক্ষণ না করা হয়?
জার্নো

উত্তর:


25

দেখতে বেশ সুন্দর, কয়েকটি মন্তব্য। দুটি প্রথম মন্তব্য কমান্ডটিকে আরও নিরাপদ করে, তৃতীয় এবং চতুর্থটি এটিকে কিছুটা খাটো করে তোলে। এগুলির যে কোনও একটিকে অনুসরণ বা অবহেলা করতে নির্দ্বিধায়। যদিও আমি দৃ strongly়ভাবে প্রথম দুটি অনুসরণ করার পরামর্শ দেব। আপনি এটি নিশ্চিত করতে চান যতটা সম্ভব নিরাপদ। আমি গুরুত্ব সহকারে বলতে চাই। আপনি sudo apt-get -y purgeকিছু স্বয়ংক্রিয়ভাবে উত্পন্ন প্যাকেজ তালিকায় একটি নিক্ষেপ করছেন । এতো খারাপ ! :)

  1. সকলের তালিকাবদ্ধকরণ linux-*আপনাকে অনেকগুলি মিথ্যা ধনাত্মকতা অর্জন করবে, যেমন (আমার আউটপুট থেকে উদাহরণ) linux-sound-base। যদিও আপনার কমান্ডের পরে এগুলি ফিল্টার করা যেতে পারে তবে আমি ব্যক্তিগতভাবে তাদের প্রথমে তালিকাভুক্ত না করা নিরাপদ বোধ করব। আপনি কোন প্যাকেজগুলি সরাতে চান তা আরও ভাল নিয়ন্ত্রণ করুন। অপ্রত্যাশিত ফলাফল হতে পারে এমন কাজ করবেন না। সুতরাং আমি দিয়ে শুরু হবে

    dpkg -l linux-{image,headers}-*
  2. আপনার মতামতটি "কেবলমাত্র সংখ্যাগুলির তালিকাবদ্ধ করুন" তে আপনার রেজেক্স কিছুটা সহজ my উদাহরণস্বরূপ, linux-libc-dev:amd64আপনি যখন 64৪-বিট সিস্টেমে থাকেন তখন প্যাকেজটি থাকে । আপনার regex মিলবে। আপনি এটি মেলে না চান। স্বীকার করে নিন, আপনি যদি আমার প্রথম পরামর্শ অনুসরণ করেন তবে linux-libc-dev:amd64তা তবে তালিকাভুক্ত হবে না তবে এখনও। আমরা "সংস্করণ নম্বর আছে" এর চেয়ে সাধারণ সংস্করণ সংখ্যার কাঠামো সম্পর্কে আরও জানি। অতিরিক্তভাবে, কেবল শেল দ্বারা সম্ভাব্য ভুল ব্যাখ্যা রোধ করার জন্য, রেজিগেসগুলি উদ্ধৃত করা সাধারণত একটি ভাল ধারণা। সুতরাং আমি যে egrep কমান্ড করা হবে

     egrep '[0-9]+\.[0-9]+\.[0-9]+'
  3. তারপর এই বাছাই জিনিস আছে। আপনি বাছাই কেন? যেহেতু আপনি যে কোনও উপায়ে সমস্ত কার্নেল (বর্তমানের বাদে) অপসারণ করছেন, তাই আপনার পক্ষে কি নতুনের আগে পুরানোগুলি মুছে ফেলা গুরুত্বপূর্ণ? আমি মনে করি না যে এটি কোনও পার্থক্য করে। বা আপনি কেবল এটি করছেন যাতে আপনি তারপরে sed"কেবলমাত্র বর্তমান কার্নেলের পরে ফলাফলগুলি মুদ্রণ করতে" ব্যবহার করতে পারেন ? তবে আইএমও এটিকে অনেক জটিল মনে করে। আপনি ইতিমধ্যে যে grep -vকোনও উপায়ে ইতিমধ্যে করছেন এবং হয়ে গেলে আপনার বর্তমান কার্নেলের সাথে সম্পর্কিত ফলাফলগুলি কেন কেবল ছাঁটাইবেন না ? সত্য, আমি যদি আপনার কমান্ডের প্রথম অংশটি গ্রহণ করি (আমার দুটি পূর্ববর্তী প্রস্তাবগুলি সংহত করে), আমার মেশিনে on

    $ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | sort -t- -k3,4 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"`
    linux-image-3.8.0-34-generic
    linux-image-3.5.0-44-generic

    এই বাছাই / সেড স্টাফগুলি সরিয়ে, আমি পেয়েছি

    $ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | grep -v -e `uname -r | cut -f1,2 -d"-"`
    linux-image-3.5.0-44-generic
    linux-image-3.8.0-34-generic
    linux-image-extra-3.5.0-44-generic
    linux-image-extra-3.8.0-34-generic

    সুতরাং আপনার আরও জটিল কমান্ডটি আসলে আমার মেশিনে দুটি প্যাকেজ মিস করবে, যেটি আমি মুছে ফেলতে চাই (এখন এটি সম্ভব যে এই linux-image-extra-*জিনিসগুলি টমটসের উপর নির্ভর করে linux-image-*এবং তাই যেভাবেই মুছে ফেলা হবে, তবে এটি স্পষ্ট করে তুলতে ক্ষতি করতে পারে না)। যাইহোক, আমি আপনার বাছাইয়ের বিন্দুটি দেখতে পাচ্ছি না; grep -vঅভিনব প্রিপ্রোসেসিং ছাড়াই একটি সহজ জরিমানা হওয়া উচিত, সম্ভবত এটি আরও ভাল। আমি কেআইএসএস নীতির প্রবক্তা am এটি আপনার পক্ষে বুঝতে বা পরে ডিবাগ করা সহজ করবে। এছাড়াও, বাছাই ছাড়াই এটি কিছুটা বেশি দক্ষ;)

  4. এটি নিখুঁতভাবে অ্যাসেথিটিক তবে আপনি এই সামান্য খাটো বৈকল্পের সাথে একই আউটপুট পাবেন। :-)

    $ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | grep -v $(uname -r | cut -d- -f-2)
    linux-image-3.5.0-44-generic
    linux-image-3.8.0-34-generic
    linux-image-extra-3.5.0-44-generic
    linux-image-extra-3.8.0-34-generic

ফলস্বরূপ, আমি সহজ এবং নিরাপদ আদেশ দিয়ে শেষ করছি

$ dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | egrep '[0-9]+\.[0-9]+\.[0-9]+' | grep -v $(uname -r | cut -d- -f-2) | xargs sudo apt-get -y purge

যেহেতু আপনি আসলে আপনার পরিষ্কার করতে চান /bootপার্টিশন, একটি সম্পূর্ণ ভিন্ন পদ্ধতির বিষয়বস্তু প্রদর্শনের জন্য ব্যবহৃত হবে /boot, ব্যবহার dpkg -Sপ্যাকেজ নির্ধারণ করার জন্য পৃথক ফাইলগুলি বর্তমান কার্নেল অন্তর্গত বাইরে, ফিল্টার অন্তর্গত, এবং তার ফলে প্যাকেজ মুছে ফেলুন। কিন্তু আমি আপনার পদক্ষেপ ভালো মত কারণ এটি যেমন সেকেলে প্যাকেজ পাবেন linux-headers-*, যা ইনস্টল না /boot, কিন্তু /usr/src


আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ_মল্ট, আপনার ইনপুটটির জন্য ধন্যবাদ। আমি আপনার প্রথম দুটি পদক্ষেপ খুব স্পষ্ট করে দেখতে পেয়েছি এবং তারা অনায়িককে সত্যই নিরাপদ করে তুলেছে। যাইহোক, আমি বিশ্বাস করি যে আপনার শেষ দুটি পদক্ষেপগুলি নতুন কার্নেলগুলি উপেক্ষা করে এবং সেগুলি পরিষ্কারও করে। কমপক্ষে, আমি আমার সার্ভারে আপনার সমাধানটি চেষ্টা করেছি এবং এটি অযাচিত কিছু আনইনস্টল করে দিতে চাই।
আলেজান্দ্রো

এটি চমৎকার. আপনি কি আমাকে দুটি আউটপুটগুলি প্রধানমন্ত্রী করতে পারেন, কমান্ডের সাথে আমার তৃতীয় ও চতুর্থ পরামর্শ অন্তর্ভুক্ত রয়েছে, সেগুলি ব্যতীত একটি? প্লাস এর আউটপুট uname -r। আমার জন্য এটি ভাল কাজ করে। এটি আপনার ক্ষেত্রে এটি কেন কাজ করে না তা দেখতে আকর্ষণীয় হবে।
মাল্টে স্কোরুপা,

1
আমি আপনাকে প্রধানমন্ত্রী করার চেষ্টা করেছি কিন্তু আমি কোনও ইমেল ঠিকানা পাইনি তাই আমি আমার আউটপুট এখানে পোস্ট করব: hastebin.com/raleyigowe.vhdl uname -r দেখায় যে আমার সার্ভারটি লিনাক্স-চিত্র ব্যবহার করছে - 3.8.0-34 কথাটি হ'ল কখনও কখনও কোনও সার্ভার একটি নতুন কার্নেল ডাউনলোড করেছে তবে এটি এখনও ইনস্টল করে নি। এজন্য আমি কেবল পুরানো কার্নেলগুলি অপসারণের জন্য একটি উপায় খুঁজছিলাম ।
আলেজান্দ্রো

এই কমান্ডটি আমার বর্তমান কার্নেলের জন্য শিরোনাম ফাইলটি নির্বাচন করেছে, যা অযাচিত মনে হয়।
মার্ক স্টসবার্গ

1
@ মাল্টসকোরুপা, uname -rউত্পাদন করে 4.8.0-36-generic , যা linux-headers-4.8.0-36তালিকা থেকে বাদ দিতে ব্যর্থ হয় ।
মার্ক স্টসবার্গ

7

আমি এই স্ক্রিপ্টটি লিখেছিলাম যা "লিনাক্স- *" প্যাকেজগুলি সরিয়ে দেয় যা বর্তমানে বুট করাগুলির চেয়ে কম সংস্করণ রয়েছে। আমি মনে করি এটি প্যাকেজ স্থিতি পরীক্ষা করা প্রয়োজন হয় না। কমান্ড প্যাকেজগুলি পরিষ্কার করার আগে নিশ্চিতকরণের জন্য জিজ্ঞাসা করে। আপনি যদি এটি না চান তবে অ্যাপ-গেট কমান্ড -y বিকল্পটি যুক্ত করুন।

sudo apt-get purge $(dpkg-query -W -f'${Package}\n' 'linux-*' |
sed -nr 's/.*-([0-9]+(\.[0-9]+){2}-[^-]+).*/\1 &/p' | linux-version sort | 
awk '($1==c){exit} {print $2}' c=$(uname -r | cut -f1,2 -d-))

যাইহোক, অতিরিক্ত পরিমাণ কার্নেলগুলি কনফিগারযোগ্য পরিমাণ ছাড়তে সক্ষম হতে, আমি বিকল্পটি linux-purgeসহ আমার স্ক্রিপ্টটি ব্যবহার করার পরামর্শ দিই --keep। স্ক্রিপ্ট সম্পর্কে আরও তথ্যের জন্য এখানে দেখুন ।


3

টিএল; ডিআর: নীচে যান।

যদিও এটি কিছুটা দীর্ঘ। আমি এটি আপনার জন্য ভেঙে দেব:

  1. dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}'ঠিক যেমন মাল্টে পরামর্শ দিয়েছে। সম্পর্কিত কার্নেল ফাইলগুলি তালিকাভুক্ত করে।
  2. egrep '[0-9]+\.[0-9]+\.[0-9]+' এছাড়াও সংস্করণ নম্বর অনুসন্ধান করে কেবল কার্নেল ফাইলগুলি বাছাই করার নিরাপদ উপায় হিসাবে মাল্টে পরামর্শ দিয়েছেন।
  3. যেহেতু আমরা সম্ভবত ইমেজ এবং শিরোলেখ প্যাকেজ উভয়কেই তালিকাভুক্ত করছি, প্যাকেজটির নামকরণ ভিন্ন হতে পারে তাই আমাদের কাছে এই খসড়া কাজটি রয়েছে যা সাজানোর জন্য প্রয়োজনীয় 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
  4. বর্তমানে চলমান চিত্রের চেয়ে কোনও নতুন চিত্র আনইনস্টল করা রোধ করতে এখন আমাদের তালিকাটি অবশ্যই বাছাই করতে হবে। 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
  5. আমাদের বর্তমান এটি 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
  6. 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
  7. এখন আমরা প্যাকেজ ম্যানেজারকে স্বয়ংক্রিয়ভাবে সবকিছু মুছে ফেলার এবং গ্রাবটিকে পুনরায় কনফিগার করার জন্য এটি খাওয়াতে পারি:

    আমি প্রথমে একটি শুকনো রান করার পরামর্শ দিই (যদিও আপনার স্ক্রিপ্টিংয়ের জন্য যদি আপনার বিশাল পরিবেশ থাকে তবে এটি ব্যবহারিক নাও হতে পারে)

    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

আবার এই "ওয়ান-লাইনার" এর সম্পূর্ণ বিন্দুটি বর্তমানে চলমান কার্নেলের চেয়ে কেবল ওল্ডার কার্নেলগুলি সরিয়ে ফেলতে হবে (যে কোনও নতুন ইনস্টল করা কার্নেলগুলি এখনও উপলব্ধ)

ধন্যবাদ আমাকে জানতে দিন যে এটি আপনার পক্ষে কীভাবে কাজ করে এবং যদি আপনি এটি উন্নতি করতে পারেন!



1

আপনি 'ls' কমান্ড ব্যবহার করে কার্নেল সংস্করণগুলি দেখতে কেবল বুট ডিরেক্টরিটি তালিকাভুক্ত করতে পারেন। তারপরে 'sudo apt-get -y purge "xxx" "ব্যবহার করুন যেখানে" এক্সএক্সএক্স "আপনি যে সংস্করণটি সরাতে চান সেটির সাথে প্রতিস্থাপন করা হবে। আপনি বর্তমানে যে সংস্করণটি চালাচ্ছেন এটি যেন না হয় সেদিকে খেয়াল রাখুন !!


1
তারা ওয়ান-লাইনার কমান্ড চেয়েছিল। আপনার সমাধানটির জন্য 1 টির বেশি লাইন দরকার
আনোয়ার

1

bikeshed( apt install bikeshed) ইনস্টল করুন এবং purge-old-kernelsরুট হিসাবে কল করুন ।

$ sudo purge-old-kernels

purge-old-kernels "এপেট অটোমোমোভ" এর পক্ষে অবহেলা করা হয়েছে। আপনার যদি সমস্যা হয় তবে দয়া করে অ্যাপের বিরুদ্ধে বাগ ফাইল করুন। বাগ.লাঞ্চপ্যাড.এন.পি.
ভ্যান গ্যাস

0

অনুরোধের ভিত্তিতে একটি দ্রুত উত্তর, ব্যাখ্যা:

dpkg -l 'linux-image-[0-9]*' | 
awk -v current="$(uname -r)" '!/^i/ || $2~current {next} {print $2}' |
sed '$d' | 
xargs echo sudo apt-get autoremove

2
ব্যাখ্যাটি অন্তর্ভুক্ত করার জন্য আমি এটি প্রসারিত করার পরামর্শ দিচ্ছি (বা, আপনি যদি চান তবে অনুরোধ করুন)। :)
এলিয়াহ কাগন

এলিয়াকাগান, আমি মনে করি স্ক্রিপ্টটির কোনও অর্থ নেই। যে প্যাকেজগুলি ইনস্টল করার ইচ্ছা নেই তা এড়িয়ে যান কেন? স্ক্রিপ্টটি বর্তমানের চেয়ে কিছু নতুন কার্নেল সরিয়ে ফেলতে পারে বা sed '$d'কমান্ড দ্বারা কিছু পুরানো সংরক্ষণ করতে পারে । স্ক্রিপ্টটি কোনও লিনাক্স-শিরোলেখ প্যাকেজগুলি বা অন্য কার্নেল প্যাকেজগুলি মুছে ফেলার জন্য মুছে ফেলবে না, প্যাকেজগুলির কনফিগারেশন ফাইলগুলি মুছবে না। পরিবর্তে আমি আমার উত্তরটি ব্যবহার করার পরামর্শ দেব।
জার্নো

@ এলিয়াকাগান আসলে স্ক্রিপ্টটি কোনও প্যাকেজ অপসারণ করে না, তবে আপনি যে আদেশটি চালাতে পারেন তা প্রিন্ট করে (দ্বারা echo) apt-get
জার্নো

0

আমি এই সমস্ত অপ্রয়োজনীয় জটিলতায় সত্যই ক্লান্ত হয়ে পড়েছি এবং পাইথন প্যাকেজ তৈরি করেছি যা ওয়ান-লাইনারকে তুচ্ছ করে তোলে:

ubuntu-old-kernel-cleanup | xargs sudo apt-get -y purge

এটি দিয়ে ইনস্টল করুন

sudo pip install git+http://github.com/mrts/ubuntu-old-kernel-cleanup.git

Https://github.com/mrts/ubuntu-old-kernel-cleanup এ আরও দেখুন ।

আশা করি এটি অন্যকেও সহায়তা করবে।


এটি চেষ্টা করেও আমি ত্রুটি পেয়েছি: "উবুন্টু-ওল্ড-কার্নেল-ক্লিনআপ: কমান্ড পাওয়া যায় নি"
গ্র্যান্ট

তাহলে এটি আপনার সম্পাদনযোগ্য অনুসন্ধানের পথে নয় not আপনি কি sudo pip install ...উপরে বর্ণিত হিসাবে এটি ইনস্টল করেছেন? sudoআসলে গুরুত্বপূর্ণ, অন্যথায় pipএটি কোনও ব্যবহারকারীর ডিরেক্টরিতে এটি ইনস্টল করবে এবং শেল এই ডিরেক্টরিটি এক্সিকিউটেবল ফাইলের জন্য অনুসন্ধান করতে পারে না।
এমআরটিস

0
sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

সর্বদা কাজ করে, এবং এমনকি উবুন্টু 17.10


আমার জন্য এটি অপসারণ করার চেষ্টা করে linux-libc-dev:amd64, এটি অযাচিত।
মাল্টে স্কোরুপা,
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.