logrotate
logrotate — это утилита Linux, которая выполняет ротацию, сжатие и удаление файлов журналов, чтобы они не переполняли диск. Обычно она запускается один раз в день с помощью таймера systemd или задания cron и считывает файл /etc/logrotate.conf, а также правила для отдельных пакетов в /etc/logrotate.d/.
1Типичное правило
Правило указывает один или несколько файлов журналов и директивы, такие как daily или weekly (частота), rotate 7 (сколько старых файлов хранить), compress (сжатие старых файлов с помощью gzip), missingok (отсутствие ошибки, если файл отсутствует), notifempty (пропуск пустых журналов) и postrotate ... endscript (команда, выполняемая после ротации, например, для повторного открытия журнала).
2copytruncate
Некоторые программы продолжают запись в один и тот же открытый файл. Параметр copytruncate копирует журнал, а затем усекает исходный файл вместо его перемещения, поэтому программа сохраняет свой дескриптор файла; несколько строк, записанных во время копирования, могут быть потеряны.
3Тестирование
Команда logrotate -d /etc/logrotate.conf запускается в режиме отладки и только выводит информацию о том, что произойдет. Флаг -f принудительно выполняет ротацию, даже если срок еще не подошел.
Как добавить и протестировать правило
- Создайте файл
/etc/logrotate.d/myappс путем к журналу и директивами, например weekly, rotate 4, compress, missingok, notifempty. - Пробный запуск:
sudo logrotate -d /etc/logrotate.d/myapp - Если вывод выглядит корректно, принудительно выполните одну ротацию:
sudo logrotate -f /etc/logrotate.d/myapp - Проверьте результат: ls -l в каталоге журналов.
Осторожно
- Неверный шаблон пути может привести к ротации или удалению журналов других программ.
- Журналы, управляемые systemd journal, ограничиваются в journald.conf, а не с помощью logrotate.
Связанные статьи
- journalctl и журнал systemdКак читать логи с помощью journalctl, проверять объем занимаемого журналом места и безопасно очищать его с помощью опций --vacuum.
- Использование диска с помощью du и ncduКак найти, что заполняет диск в Linux с помощью du и интерактивной утилиты ncdu, используя параметры для ограничения поиска одной файловой системой.
- cron и crontabКак cron выполняет запланированные задачи, пять полей времени crontab, где хранятся системные файлы cron и как они соотносятся с таймерами systemd.
Источники
- logrotate(8) man7.org
- logrotate(8) (Debian) manpages.debian.org
Последняя проверка: