Как чистить логи на VDS Bash
Покажу вам как чистить логи на VDS. Как найти 10 самых больших файлов логов? Если ваши сайты упали и вы не знаете что произошло, то не паникуйте и попытайтесь сами разобраться с проблемой. Я очень часто сталкиваюсь с засорением севрера логами. Логи разрастаются и буквально съедают свободное место HDD. Обычно в таким случае мы сразу пишем в службу поддержки. Не спешите жаловоться. Постарайтесь пролезть на сервер по ssh и удалить огромные логи. Сразу ваш север оживёт и ваши сайты заработают.
Есть несколько способов для того чтобы найти большие логи. Я воспользуюсь самой излюбленной командой find.
find . -type f -exec du -h {} + | sort -hr | head -n 10Что делает эта команда?
- find . -type f — ищет только файлы (игнорирует папки) начиная с текущей директории.
- -exec du -h {} + — для каждого файла выводит размер в человеческом формате (K, M, G).
- sort -hr — сортирует по размеру по убыванию (-h понимает человеческие единицы, -r — reverse).
- 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- %s — размер в байтах
- %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. Скрипты можно запускать по крону или вручную. После запуска они просто срежут жирные логи по условию. Скрипты легко настраиваются под ваш сервер.