Свободное место — странный предмет. Коль оно есть, то его сразу нет. Свободное место в операционных системах имеет свойство заканчиваться. К счастью, в Linux оно заканчивается не так быстро как в Windows, но всё равно со временем система засоряется ненужными пакетами, конфигурационными файлами и логами.
Если инфраструктура позволяет, то можно просто наращивать объёмы дисков, а лишний хлам со временем будет удалён вместе с обновлением сервера целиком. Но на небольших или домашних системах необходимо следить за свободным местом и принимать соответствующие меры.
Сегодня будем чистить Ubuntu Server. Многие способы подходят и для Ubuntu Desktop.
Проверка свободного места
Неплохо бы узнать чем диски забились и какие папки занимают больше всего места. На ум приходит полезная утилита ncdu:
Полезные команды для определения размера папок:
ncdu /
df -hT
du -h --max-depth 1
Чистим пакеты
Пакеты — одно из основных мест засорения системы. Приложения устанавливаются, обновляются, тянут за собой зависимости. После удаления пакета или обновления в системе остаётся много ненужных пакетов. Несколько команд для очистки apt. Удаляем неиспользуемые пакеты из кэша и удаляем ненужные зависимости.
apt-get autoclean
apt-get autoremove
Несколько команд для очистки snap. Менеджер пакетов snap удаляет за собой старые версии пакетов, но не все, по умолчанию сохраняется три последние версии. Можно изменить на две:
snap set system refresh.retain=2
Если нужно полностью удалить неиспользуемые пакеты snap, то придётся написать скрипт:
#!/bin/bash
set -eu
LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
Посмотреть список удалённых пакетов:
dpkg -l | awk '/^rc/ {print $2}'
Очистка файлов удалённых пакетов dpkg.
dpkg -l | awk '/^rc/ {print $2}' | xargs dpkg --purge
# или
aptitude purge ~c
Удаляем старые ядра
Со временем из-за обновлений в системе накапливается много неиспользуемых образов ядер, которые только занимают по 200-400 мегабайт дискового пространства. Нужно однозначно чистить.
Посмотреть сколько в вашей системе набралось образов ядер:
ls /boot/
# или
apt list --installed | egrep "linux-image|linux-headers"
# или
dpkg --list | egrep "linux-image|linux-headers"
Ого, сколько накопил. Удалённые помечены как rc. Их можно снести командами выше:
Теперь осталось поменьше:
Какое ядро используется на данный момент:
uname -a
Удалить любую версию ядра:
apt purge linux-image-4.15.0-212-generic linux-headers-4.15.0-212-generic
В более новых версиях Ubuntu Server старые версии ядра можно также удалить командой:
apt-get autoremove
Удалить все старые ядра, кроме используемого и предпоследнего:
apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
apt autoremove
update-grub
update-grub2
Очистка журналов
Linux имеет механизм протоколирования, журналы тоже занимают место. Проверить размер журнала:
journalctl --disk-usage
Удалить журналы старше недели:
journalctl --vacuum-time=1weeks
Уменьшить размер журнала до 100 МБ:
journalctl --vacuum-size=100M
Плюс пара гигабайт свободного места.
Самый быстрый способ
Если у вас не самая старая версия Ubuntu Server, то можно обойтись:
apt-get autoclean
apt-get autoremove
journalctl --vacuum-size=100M
journalctl --vacuum-time=1weeks