بلاگ/حذف کرنل‌های قدیمی بدون استفاده در اوبونتو 18.04
به‌روز شده

حذف کرنل‌های قدیمی بدون استفاده در اوبونتو 18.04

با گذر زمان همواره آپدیت‌های جدیدی برای کرنل لینوکس 16.04 یا 18.04 LTS server ارائه می‌شود. نصب این آپدیت‌ها امری ضروری برای بروز نگه‌داشتن سرور و حفظ امنیت آن است. اما به مرور پکیج‌هایی که برای آپدیت کرنل دانلود می‌کنید، افزایش پیدا کرده و سبب اشغال بی‌مورد فضای دیسک سرور می‌گردد. حذف کرنل‌های...

1398/10/293966 بازدید
حذف کرنل‌های قدیمی بدون استفاده در اوبونتو 18.04
با گذر زمان همواره آپدیت‌های جدیدی برای کرنل لینوکس 16.04 یا 18.04 LTS server ارائه می‌شود. نصب این آپدیت‌ها امری ضروری برای بروز نگه‌داشتن سرور و حفظ امنیت آن است. اما به مرور پکیج‌هایی که برای آپدیت کرنل دانلود می‌کنید، افزایش پیدا کرده و سبب اشغال بی‌مورد فضای دیسک سرور می‌گردد. حذف کرنل‌های قدیمی و بدون استفاده می‌تواند به شما در مدیریت بهینه فضای دیسک کمک کند. با ما همراه باشید.
حذف کرنل‌های بدون استفاده و قدیمی در اوبونتو 18.04
روالی که برای حذف تمامی کرنل‌های قدیمی و بدون استفاده باید طی شود به شرح زیر است: 1) در گام نخست باید سرور را با جدیدترین نسخه کرنل بوت کنید. 2) با استفاده از دستور dpkg تمامی کرنل‌های قدیمی را لیست کنید. 3) با اجرای دستور df -H میزان استفاده از فضای دیسک سیستم را یادداشت کنید. 4) تمامی کرنل‌های بدون استفاده و قدیمی را حذف کنید. 5) تایید کنید.
چگونه لیست تمامی کرنل‌های نصب شده را بدست آوریم؟
با استفاده از دو دستور dpkg و egrep بصورت زیر، می‌توانید لیستی از تمامی کرنل‌های نصب شده تهیه کنید:
php
sudo dpkg --list | egrep -i --color 'linux-image|linux-headers'
لیست کرنل‌های قدیمی بدون استفاده در تصویر بالا لیستی از کرنل‌های بدون استفاده و قدیمی را مشاهده می‌کنید که باید از روی سیستم پاک شوند. برای بدست آوردن تعداد ایمیج-کرنل‌هایی که روی سیستم شما نصب است، دستور زیر را اجرا نمایید:
php
sudo dpkg --list | egrep -i --color 'linux-image|linux-headers' | wc -l
  نمونه خروجی:
php
// Output: 57
با اجرای دستور زیر، میزان فضای دیسکِ آزادِ فایل سیستم را بدست آورید:
php
df -H
فضای آزاد موجود در فایل سیستم
چطور کرنل‌های قدیمی را در اوبونتو ورژن 18.04 و بالاتر حذف کنیم؟
با استفاده از دستور apt به دو طریق می‌توان اینکار را انجام داد:
php
sudo apt --purge autoremove// ORsudo apt-get --purge autoremove
حذف کرنل‌های بدون استفاده و قدیمی در اوبونتو در خروجی دستور فوق مشاهده می‌کنید که تمامی نسخه‌های قدیمی و بدون استفاده کرنل لیست شده‌اند و می‌توانید آن‌ها را پاک کنید.
حذف کرنل‌های بدون استفاده در اوبونتو 16.04 LTS و قدیمی‌تر
ابتدا کرنل‌ در حال اجرا را پیدا کنید:
php
v="$(uname -r | awk -F '-virtual' '{ print $1}')"echo "$v"
خروجی نمونه:
php
4.15.0-65-generic
  در گام بعدی، لیستی درست کنید و در آن مشخصا اعلام کنید که کرنل در حال اجرا نباید پاک شود:
php
i="linux-headers-virtual|linux-image-virtual|linux-headers-generic-hwe-|linux- image-generic-hwe-|linux-headers-${v}|linux-image-$(uname -r)|linux-image- generic|linux-headers-generic"echo "$i"
نمونه خروجی (کرنلی که قرار است روی سیستم نگه دارید باید در این خروجی مشخص باشد):
php
linux-headers-virtual|linux-image-virtual|linux-headers-generic-hwe-|linux-image-generic-hwe-|linux- headers-4.15.0-65-generic|linux-image-4.15.0-65-generic|linux-image-generic|linux-headers-generic
  با اجرای دستور زیر، لیست کرنل‌هایی که باید حذف شوند را مشخص کنید:
php
dpkg --list | egrep -i 'linux-image|linux-headers' | awk '/ii/{ print $2}' | egrep -v "$i"
نمونه خروجی:
php
linux-headers-4.15.0-45linux-headers-4.15.0-45-genericlinux-headers-4.15.0-64linux-headers-4.15.0-64-genericlinux-headers-4.15.0-65linux-headers-4.4.0-165linux-headers-4.4.0-165-genericlinux-image-4.10.0-27-genericlinux-image-4.10.0-33-genericlinux-image-4.10.0-35-genericlinux-image-4.10.0-37-genericlinux-image-4.10.0-38-genericlinux-image-4.10.0-40-genericlinux-image-4.10.0-42-genericlinux-image-4.13.0-26-genericlinux-image-4.13.0-31-genericlinux-image-4.13.0-36-genericlinux-image-4.13.0-37-genericlinux-image-4.13.0-38-genericlinux-image-4.13.0-39-genericlinux-image-4.13.0-41-genericlinux-image-4.13.0-43-genericlinux-image-4.13.0-45-genericlinux-image-4.15.0-30-genericlinux-image-4.15.0-32-genericlinux-image-4.15.0-33-genericlinux-image-4.15.0-34-genericlinux-image-4.15.0-36-genericlinux-image-4.15.0-38-genericlinux-image-4.15.0-39-genericlinux-image-4.15.0-42-genericlinux-image-4.15.0-43-genericlinux-image-4.15.0-45-genericlinux-image-4.15.0-64-genericlinux-image-4.4.0-165-generic
 
چگونه کرنل‌های بدون استفاده و قدیمی را در اوبونتو (Linux 16.04 LTS server) حذف کنیم؟
سرانجام، با اجرای دستور زیر همه کرنل‌های بدون استفاده که بصورت ناخواسته فضای سرور را اشغال کرده‌اند، حذف کنید:
php
$ sudo -i# apt-get --purge remove $(dpkg --list | egrep -i 'linux-image|linux-headers' | awk '/ii/{ print $2}' | egrep -v "$i")
حذف تمامی کرنل‌های بدون استفاده از روی سیستم
نتیجه:
دوباره دستور df را اجرا کنید:
php
df -H
خروجی نمونه:
php
Filesystem      Size  Used Avail Use% Mounted onudev            1.1G     0  1.1G   0% /devtmpfs           210M  6.0M  204M   3% /run/dev/vda1        42G  6.7G   35G  17% /tmpfs           1.1G     0  1.1G   0% /dev/shmtmpfs           5.3M     0  5.3M   0% /run/locktmpfs           1.1G     0  1.1G   0% /sys/fs/cgrouptmpfs           103k     0  103k   0% /var/lib/lxd/shmountstmpfs           103k     0  103k   0% /var/lib/lxd/devlxdtmpfs           210M     0  210M   0% /run/user/0
بدین ترتیب شما از شر کرنل‌های قدیمی و بدون استفاده راحت شدید و فضای اشغال شده توسط آن‌ها به فضای در دسترس سیستم شما اضافه شد. امیدواریم که این مطلب به شما کمک کرده باشد.