👁 Со временем системные и docker-логи могут занять гигабайты места. Особенно если ты разрабатываешь микросервисы, гоняешь CI/CD пайплайны или просто давно не заглядывал в /var/log. Вместо того чтобы чистить всё вручную, лучше автоматизировать процесс через надёжный Bash-скрипт.
📝 Скрипт, который удаляет логи старше 7 дней, логирует действия и работает безопасно:
#!/bin/bash
LOG_DIRS=("/var/log" "/var/lib/docker/containers")
LOG_FILE="/var/log/log_cleaner.log"
DAYS=7
echo "[INFO] $(date): Запуск очистки логов старше $DAYS дней" >> "$LOG_FILE"
for DIR in "${LOG_DIRS[@]}"; do
find "$DIR" -type f -name "*.log" -mtime +$DAYS -print0 | \
tee -a "$LOG_FILE" | xargs -0 -r rm -f
done
echo "[INFO] Очистка завершена" >> "$LOG_FILE"🔎 Что делает скрипт:
- — Чистит .log-файлы старше 7 дней
- — Работает с несколькими директориями
- — Ведёт лог своих действий (вдруг что-то пошло не так)
- — Не удаляет ничего без списка (-print0 | tee)
- — Безопасен: -r в xargs предотвращает запуск без аргументов
📌 Как использовать:
- • Скопируй код в файл, например log_cleaner.sh
- • Сделай его исполняемым: chmod +x log_cleaner.sh
- • Добавь в cron, чтобы запускался каждую неделю (или чаще)
- • Проверь /var/log/log_cleaner.log после запуска
❗️ Такой подход поможет держать систему чистой, не теряя важные логи и не полагаясь на случай. Ну а если нужна гибкость — можно подключить logrotate или перейти на централизованный сбор логов (Graylog, Loki, ELK и пр).
tags: #bash #linux #логирование
❤️ @recura_tech



