Bash зарисовки

У вас есть сервер и вот однажды наступает момент, когда дисковое пространство заканчивается. Это может быть все что угодно, от неверно настроенного сбора логов, до различных кешей от докеров и прочих приложений. Как узнать кто самый пухлый, кто занимает пространство? Есть в Linux’ах 2 полезные утилиты: df и du.

Одна показывает свободное место, другая как используется диск (какой файл сколько занимает). Вы смотрите с помощью df сколько у вас есть места:

df -h

и понимаете, что осталось свободно пара гигабайт. Кто скушал пространство?

Смотрим самые большие файлы и директории в Linux

Если нужно найти самые большие директории и файлы в конкретном каталоге, то используем команду:

du -a /your/directory | sort -nr | head -n 30

Выведет отсортированный список в порядке убывания. Вывод будет выглядеть так:

14778156 /
5117688 /usr
3549640 /root
3178464 /www
1422364 /usr/lib
...

Вывести данные в удобочитаемом виде

du -hs * | sort -rh | head -20

Выдаст:

4.9G    usr
1.1G var
893M home
127M run
48M etc
1.1M tmp
24K share
4.0K mnt

Вывести данные, включая субдиректории

du -Sh | sort -rh | head -20

Найти только самые большие файлы

find / -type f -exec du -Sh {} + | sort -rh | head -n 20
# или
find / -type f -printf "%s %pn" | sort -rn | head -n 20

Еще статьи по теме

https://medium.com/@frontman/%D1%87%D0%B8%D1%81%D1%82%D0%B8%D0%BC-%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D0%BD%D0%B0-vps-vds-%D1%81-%D0%B4%D0%BE%D0%BA%D0%B5%D1%80%D0%B0%D0%BC%D0%B8-863f0ccf2ef1