training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как чистить логи на VDS Bash

Создано: 23 декабря 2025Автор: Егор Астапов36 просмотровСложность: легкий
Как чистить логи на VDSЧасто сайты накрываются из за разрастания логов. Покажу вам несколько спобов для поиска 10 больших файлов на вашем сервере.

Покажу вам как чистить логи на VDS. Как найти 10 самых больших файлов логов? Если ваши сайты упали и вы не знаете что произошло, то не паникуйте и попытайтесь сами разобраться с проблемой. Я очень часто сталкиваюсь с засорением севрера логами. Логи разрастаются и буквально съедают свободное место HDD. Обычно в таким случае мы сразу пишем в службу поддержки. Не спешите жаловоться. Постарайтесь пролезть на сервер по ssh и удалить огромные логи. Сразу ваш север оживёт и ваши сайты заработают.

Есть несколько способов для того чтобы найти большие логи. Я воспользуюсь самой излюбленной командой find.

find . -type f -exec du -h {} + | sort -hr | head -n 10

Что делает эта команда?

  1. find . -type f — ищет только файлы (игнорирует папки) начиная с текущей директории.
  2. -exec du -h {} + — для каждого файла выводит размер в человеческом формате (K, M, G).
  3. sort -hr — сортирует по размеру по убыванию (-h понимает человеческие единицы, -r — reverse).
  4. head -n 10 — показывает только первые 10 строк.
# вывод
4.2G ./videos/big_movie.mkv
1.8G ./backups/database_dump.sql
950M ./downloads/ubuntu.iso...
# Только в текущей папке (без подпапок)
du -h * | sort -hr | head -n 10
# игнорируя папки (точнее)
ls -lSsh * | grep -v "^d" | head -n 10
# с полным путём и размером в байтах (удобно для скриптов)
find . -type f -printf '%s %p\n' | sort -nr | head -n 10
  1. %s — размер в байтах
  2. %p — полный путь
# человеческий формат
find . -type f -printf '%s %p\n' | sort -nr | head -n 10 | numfmt --to=iec-i --suffix=B --format="%.2f"
# Только в определённой папке (например, /var или домашняя)
# В домашней папке
find ~ -type f -exec du -h {} + | sort -hr | head -n 10

# В /var/log
find /var/log -type f -exec du -h {} + | sort -hr | head -n 10
# Игнорируя ошибки доступа (permission denied)
find . -type f -exec du -h {} + 2>/dev/null | sort -hr | head -n 10
# Если хочешь искать по всему диску (осторожно, может быть долго)
sudo find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head -n 10

Удалять файлы циклом опасно, поэтому удаляйте вручную по одному. Смотрите внимательно на расширение файла перед удалёнием.

# удалять файл с подтверждением
rm -f ./file.log

Вы можете пойти другим путём и не удалять файл, а срезать его часть.

# оставить в файле 500 последних строк
tail -n 500 ./file.log > file.log

Еще могу вам предложить скрипты для очистки логов. Читайте статью Скрипты для обрезания логов Bash. Скрипты можно запускать по крону или вручную. После запуска они просто срежут жирные логи по условию. Скрипты легко настраиваются под ваш сервер.

Комментарии

реклама