Автоматическая ротация и очистка журналов
Поддерживайте диски в порядке, автоматизировав ротацию журналов и удаление старых файлов с помощью logrotate и скриптов на основе find, запускаемых по расписанию.
«Автоматическая ротация и очистка журналов» — бесплатный урок Linux Command Line & Bash Scripting Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line & Bash Scripting Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Проблема растущих журналов
Долго работающие службы записывают журналы бесконечно. Без управления они заполняют диск и приводят систему к сбою. Ротация и очистка помогают держать их под контролем.
du -sh /var/log/*Что делает ротация журналов
Ротация переименовывает текущий журнал, создаёт новый пустой и сохраняет ограниченное число старых сжатых копий.
- app.log становится app.log.1
- старые копии сжимаются с помощью gzip
- самые старые удаляются
Знакомство с logrotate
logrotate — стандартный инструмент Linux, который автоматически выполняет ротацию по размеру или сроку, заданным в /etc/logrotate.d/.
cat /etc/logrotate.confПростая конфигурация logrotate
Блок конфигурации задаёт файлы журналов и правила ротации.
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
}Разбор директив
Распространённые директивы:
dailyвыполнять ротацию ежедневноrotate 7хранить 7 старых файловcompressсжимать журналы после ротацииmissingokпропускать отсутствующие файлы
Проверка без ожидания
Принудительно запустите обработку с помощью -f или выполните пробный запуск с помощью -d, чтобы проверить конфигурацию до того, как доверить ей расписание.
logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myappСценарии postrotate
Многие службы продолжают использовать открытый дескриптор старого файла. Блок postrotate сообщает службе, что после ротации журнал нужно открыть заново.
/var/log/myapp/*.log {
daily
postrotate
systemctl reload myapp
endscript
}Очистка старых файлов с помощью find
Для разовой очистки используйте find с -mtime: команда находит файлы старше N дней и удаляет их.
find /var/log/myapp -name "*.log" -mtime +30 -deleteБезопасный сценарий очистки
Оформите очистку в виде сценария, который записывает сведения об удаляемых файлах, чтобы у Вас оставался журнал аудита.
#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
>> /var/log/cleanup.log 2>&1Планирование очистки
Разместите ротацию в конфигурации logrotate (она уже запускается через cron), а собственные сценарии очистки запланируйте отдельной записью в Вашем crontab.
# crontab -e
30 2 * * * /usr/local/bin/cleanup.shМониторинг использования диска
Добавьте проверку, которая отправляет оповещение при превышении разделом порогового значения, чтобы очистка никогда не запускалась слишком поздно.
USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert rootБыстрая проверка
Проверьте свои знания об автоматизации.
Итоги
Вы автоматизировали обслуживание журналов:
- logrotate выполняет ротацию по сроку или размеру с помощью
rotate,compress,postrotate - Проверяйте конфигурацию с помощью
-d/-f - Используйте
find -mtime +N -deleteдля собственной очистки - Планируйте запуск через cron и устанавливайте защиту с помощью оповещений об использовании диска
Часто задаваемые вопросы
Урок «Автоматическая ротация и очистка журналов» бесплатный?
Да — полный текст урока «Автоматическая ротация и очистка журналов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line & Bash Scripting Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Автоматическая ротация и очистка журналов»?
Поддерживайте диски в порядке, автоматизировав ротацию журналов и удаление старых файлов с помощью logrotate и скриптов на основе find, запускаемых по расписанию. Ты практикуешь Linux Command Line & Bash Scripting Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Command Line & Bash Scripting Mastery?
Предыдущий опыт не требуется. Linux Command Line & Bash Scripting Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Автоматическая ротация и очистка журналов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Command Line & Bash Scripting Mastery?
Да. Каждый урок Linux Command Line & Bash Scripting Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Планирование задач с Cron
- Автоматизация системного администрирования
- Проект по расширенной разработке скриптов
- Автоматическая ротация и очистка журналов