В мире DevOps автоматизация рутинных задач — это не просто удобство, а необходимость. Если вы используете Ubuntu, то наверняка сталкивались с тем, что старые ядра Linux постепенно заполняют диск, особенно раздел /boot
. В этой статье я расскажу, как настроить автоматическую очистку старых ядер с помощью встроенных возможностей apt
и планировщика cron
, а также покажу ручной метод с использованием команды apt purge
. Это отличная практика для десктопов, но для серверов я рекомендую действовать осторожнее и предпочесть ручной режим.
Зачем чистить ядра?
Каждое обновление ядра оставляет предыдущую версию на случай проблем с новым релизом. Это полезно для отката, но со временем ненужные файлы накапливаются, а раздел /boot
может переполниться, что приведёт к ошибкам при обновлении системы. Автоматизация или упрощённый ручной процесс помогают поддерживать порядок.
Вариант 1: Автоматизация с apt и cron
Современные версии Ubuntu (начиная с 22.04 и новее) интегрировали очистку старых ядер в apt
, что делает процесс проще и надёжнее.
Шаг 1: Проверка текущего ядра
Узнаем, какое ядро активно, чтобы случайно не удалить его:
uname -r
Пример вывода: 5.15.0-73-generic
. Это ядро трогать не будем.
Шаг 2: Используем apt для очистки
Команда apt autoremove
автоматически удаляет неиспользуемые пакеты, включая старые ядра:
sudo apt autoremove --purge
Флаг --purge
также удаляет конфигурационные файлы. После выполнения проверьте, какие ядра остались:
dpkg --list | grep linux-image
Шаг 3: Настройка cron для автоматизации
Для десктопов автоматизация через cron
— отличный выбор. Откройте редактор cron от имени root:
sudo crontab -e
Добавьте задание, например, для ежемесячной очистки 1-го числа в 3:00 утра:
0 3 1 * * /usr/bin/apt autoremove --purge -y >> /var/log/kernel-clean.log 2>&1
-y
автоматически подтверждает действия.>> /var/log/kernel-clean.log 2>&1
перенаправляет вывод в лог для отладки.
Сохраните изменения (в nano
: Ctrl+O
, Enter
, Ctrl+X
).
Шаг 4: Проверка
После выполнения cron-задания или ручного запуска убедитесь, что остались только нужные ядра:
dpkg --list | grep linux-image
Вариант 2: Ручная очистка с apt purge
Для серверов или если вы хотите больше контроля, используйте точечное удаление:
sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
Как это работает?
dpkg -l 'linux-*'
— список всех пакетов, связанных с ядрами.sed '/^ii/!d'
— фильтрует только установленные пакеты.'/"$(uname -r | sed ...)"'/d'
— исключает текущее ядро.s/.../\1/
— извлекает имена пакетов.head -n -1
— оставляет одно запасное ядро.sudo apt purge
— удаляет отфильтрованные ядра.
После этого обновите GRUB:
sudo update-grub
Десктопы vs Серверы
- Десктопы: Автоматизация с
cron
иapt
— идеальная практика. Обновления частые, риски минимальны, а место экономится без лишних усилий. - Серверы: Здесь лучше ручной режим. Ошибка в новом ядре может оставить сервер без загрузки, если старые версии уже удалены. Используйте
apt purge
вручную после тестирования, оставляя минимум два запасных ядра:
sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -2)
Полезные советы
- Проверяйте место на диске:
df -h
- Если
apt autoremove
не удаляет ядра, проверьте, не помечены ли они как «вручную установленные»:
sudo apt-mark auto linux-image-*
Затем повторите apt autoremove
.
Итог
Для десктопов автоматизация через apt
и cron
— это DevOps-стиль: минимум рутины, максимум порядка. Для серверов выбирайте ручной контроль с apt purge
, чтобы избежать сюрпризов. Держите /boot
в чистоте и наслаждайтесь стабильной системой!