با گذر زمان همواره آپدیت‌های جدیدی برای کرنل لینوکس 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]

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

در تصویر بالا لیستی از کرنل‌های بدون استفاده و قدیمی را مشاهده می‌کنید که باید از روی سیستم پاک شوند. برای بدست آوردن تعداد ایمیج-کرنل‌هایی که روی سیستم شما نصب است، دستور زیر را اجرا نمایید:

[php]sudo dpkg –list | egrep -i –color ‘linux-image|linux-headers’ | wc -l[/php]

 

نمونه خروجی:

[php]// Output: 57[/php]

با اجرای دستور زیر، میزان فضای دیسکِ آزادِ فایل سیستم را بدست آورید:

[php]df -H[/php]

فضای آزاد موجود در فایل سیستم


چطور کرنل‌های قدیمی را در اوبونتو ورژن 18.04 و بالاتر حذف کنیم؟

با استفاده از دستور apt به دو طریق می‌توان اینکار را انجام داد:

[php]
sudo apt –purge autoremove
// OR
sudo apt-get –purge autoremove
[/php]

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

در خروجی دستور فوق مشاهده می‌کنید که تمامی نسخه‌های قدیمی و بدون استفاده کرنل لیست شده‌اند و می‌توانید آن‌ها را پاک کنید.


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

ابتدا کرنل‌ در حال اجرا را پیدا کنید:

[php]
v="$(uname -r | awk -F ‘-virtual’ ‘{ print $1}’)"
echo "$v"
[/php]

خروجی نمونه:

[php]
4.15.0-65-generic
[/php]

 

در گام بعدی، لیستی درست کنید و در آن مشخصا اعلام کنید که کرنل در حال اجرا نباید پاک شود:

[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]

نمونه خروجی (کرنلی که قرار است روی سیستم نگه دارید باید در این خروجی مشخص باشد):

[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]

 

با اجرای دستور زیر، لیست کرنل‌هایی که باید حذف شوند را مشخص کنید:

[php]
dpkg –list | egrep -i ‘linux-image|linux-headers’ | awk ‘/ii/{ print $2}’ | egrep -v "$i"
[/php]

نمونه خروجی:

[php]
linux-headers-4.15.0-45
linux-headers-4.15.0-45-generic
linux-headers-4.15.0-64
linux-headers-4.15.0-64-generic
linux-headers-4.15.0-65
linux-headers-4.4.0-165
linux-headers-4.4.0-165-generic
linux-image-4.10.0-27-generic
linux-image-4.10.0-33-generic
linux-image-4.10.0-35-generic
linux-image-4.10.0-37-generic
linux-image-4.10.0-38-generic
linux-image-4.10.0-40-generic
linux-image-4.10.0-42-generic
linux-image-4.13.0-26-generic
linux-image-4.13.0-31-generic
linux-image-4.13.0-36-generic
linux-image-4.13.0-37-generic
linux-image-4.13.0-38-generic
linux-image-4.13.0-39-generic
linux-image-4.13.0-41-generic
linux-image-4.13.0-43-generic
linux-image-4.13.0-45-generic
linux-image-4.15.0-30-generic
linux-image-4.15.0-32-generic
linux-image-4.15.0-33-generic
linux-image-4.15.0-34-generic
linux-image-4.15.0-36-generic
linux-image-4.15.0-38-generic
linux-image-4.15.0-39-generic
linux-image-4.15.0-42-generic
linux-image-4.15.0-43-generic
linux-image-4.15.0-45-generic
linux-image-4.15.0-64-generic
linux-image-4.4.0-165-generic
[/php]

 


چگونه کرنل‌های بدون استفاده و قدیمی را در اوبونتو (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")
[/php]

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

نتیجه:

دوباره دستور df را اجرا کنید:

[php]
df -H
[/php]

خروجی نمونه:

[php]
Filesystem Size Used Avail Use% Mounted on
udev 1.1G 0 1.1G 0% /dev
tmpfs 210M 6.0M 204M 3% /run
/dev/vda1 42G 6.7G 35G 17% /
tmpfs 1.1G 0 1.1G 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
tmpfs 103k 0 103k 0% /var/lib/lxd/shmounts
tmpfs 103k 0 103k 0% /var/lib/lxd/devlxd
tmpfs 210M 0 210M 0% /run/user/0
[/php]

بدین ترتیب شما از شر کرنل‌های قدیمی و بدون استفاده راحت شدید و فضای اشغال شده توسط آن‌ها به فضای در دسترس سیستم شما اضافه شد. امیدواریم که این مطلب به شما کمک کرده باشد.