Rain WikiWindows · Linux · Android

logrotate

СлужбаБольшинство дистрибутивов Linux

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 принудительно выполняет ротацию, даже если срок еще не подошел.

Как добавить и протестировать правило

  1. Создайте файл /etc/logrotate.d/myapp с путем к журналу и директивами, например weekly, rotate 4, compress, missingok, notifempty.
  2. Пробный запуск: sudo logrotate -d /etc/logrotate.d/myapp
  3. Если вывод выглядит корректно, принудительно выполните одну ротацию: sudo logrotate -f /etc/logrotate.d/myapp
  4. Проверьте результат: ls -l в каталоге журналов.

Осторожно

  • Неверный шаблон пути может привести к ротации или удалению журналов других программ.
  • Журналы, управляемые systemd journal, ограничиваются в journald.conf, а не с помощью logrotate.

Источники

  1. logrotate(8) man7.org
  2. logrotate(8) (Debian) manpages.debian.org

Последняя проверка: