Основные параметры для настройки Вспомогательные настройки Запуск ротации вручную Проверка конфигурации Реализация независимой конфигурации Logrotate Автоматический запуск ротации
Окружение
В РЕД ОС большинство сервисов и программ, которые работают в фоне, записывают информацию о своем состоянии, результатах работы и ошибках в файлы, называемые журналами. Стандартное расположение журналов или, как их еще называют, логов — в папке /var/log.
С помощью анализа этих файлов можно понять, что работает не так, почему произошла ошибка и как решить возникшую проблему. Однако существует некоторая проблема — размер журналов постоянно растет, они занимают все больше и больше места на диске, поэтому необходимо вовремя удалять устаревшие записи, чтобы они не мешали нормальной работе компьютера. Делать это можно вручную или воспользоваться утилитой logrotate.
Logrotate — это утилита для автоматического управления лог-файлами. С помощью утилиты logrotate можно настроить автоматическое удаление, ротацию и сжатие лог-файлов для экономии места на диске.
Проверку условий можно настроить ежедневно, еженедельно или ежемесячно — это позволяет создать схему ротации логов, удобную именно для вас и вашего сервера.
Вы можете подробнее ознакомиться с возможностью настройки ротации логов при помощи утилиты logrotate, просмотрев наши обучающие видео:
на RuTube — Настройка ротации логов: logrotate;
в Яндекс.Дзен — Настройка ротации логов: logrotate;
в VK Видео — Настройка ротации логов: logrotate.
На наших каналах вы также сможете найти много другой полезной информации.
В дистрибутиве РЕД ОС программа является предустановленной по умолчанию, поэтому даже установка ОС подробно записывается в журнал:
ls /var/log/anaconda/ anaconda.log journal.log program.log X.log dbus.log ks-script-y8l57qzl.log redos-postinstall.log dnf.librepo.log lorax-packages.log storage.log hawkey.log packaging.log syslog
Все основные настройки программы находятся в файле /etc/logrotate.conf.
Для дополнительных настроек в основном файле указана папка /etc/logrotate.d. Собственные настройки лучше сохранять именно в данном каталоге, так ими будет проще управлять.
sudo nano /etc/logrotate.conf
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # system-specific logs may be also be configured here.
Периодичность выполнения проверок настраивается с помощью следующих директив:
hourly — каждый час;
hourly
daily — каждый день;
daily
weekly — каждую неделю;
weekly
monthly — каждый месяц;
monthly
yearly — каждый год.
yearly
По умолчанию настроена еженедельная (weekly) проверка.
Рассмотрим основные параметры управления и обработки журналов:
rotate <количество> — количество раз, которое ротируются файлы журналов, прежде, чем будут удалены или отправлены по почте на адрес, указанный в директиве mail;
rotate <количество>
create — создание нового лог-файла с тем же именем сразу после ротации старого;
create
dateext — архивирование старых версий файлов журналов, добавлением расширения даты, например, ГГГГММДД, а не просто числа;
dateext
compress — сжатие с помощью gzip старых версии файлов журналов по умолчанию ;
compress
delaycompress — отложить сжатие предыдущего файла журнала до следующего цикла ротации;
delaycompress
extension — сохранение расширения ext для лог-файлов после ротации;
extension
mail — при ротации журнала он отправляется на e-mail . Если для конкретного журнала не требуется отправлять почту, можно использовать директиву nomail;
mail
nomail
maxage — удалять ротируемые журналы старше <число> дней. Возраст проверяется только в том случае, если файл журнала подлежит ротации;
maxage
<число>
missingok — если файл журнала отсутствует, перейдите к следующему, не выдавая сообщение об ошибке.;
missingok
olddir <директория> — директория, в которую перемещаются старые логи для ротации;
olddir <директория>
postrotate/endscript — выполнить произвольные команды после ротации;
postrotate/endscript
start — число, которое будет использоваться в качестве базы для ротации;
start
size — размер лога в байтах, по достижении которого, он будет ротирован.
size
Это основные директивы, которые используются в конфигурационном файле. Стандартная конфигурация предполагает сохранение четырех архивных копий журналов, автоматическое создание нового файла после ротации и добавление временной метки в имена архивных файлов.
В каталоге дополнительных настроек /etc/logrotate.d находятся несколько файлов, по названиям и содержимому которых можно определить, к журналам какой программы они относятся:
ls /etc/logrotate.d/ afick bootlog chrony firebird glusterfs libreswan psacct samba wpa_supplicant aide btmp dnf firewalld iscsiuiolog ppp rsyslog sssd wtmp
В файлах содержатся правила обработки отдельных журналов.
В качестве примера рассмотрим параметры файла конфигурации bootlog:
cat /etc/logrotate.d/bootlog /var/log/boot.log { missingok daily copytruncate rotate 7 notifempty }
Файл состоит из одной записи, которая, в свою очередь, разделена на две части:
Описание параметров обработки:
copytruncate
rotate 7
notifempty
Рассмотрим ещё один файл конфигурации — sssd.
cat /etc/logrotate.d/sssd /var/log/sssd/*.log { weekly missingok notifempty sharedscripts rotate 2 compress delaycompress postrotate /bin/kill -HUP `cat /var/run/sssd.pid 2>/dev/null` 2> /dev/null || true endscript }
Здесь та же структура, но в конфигураторе дополнительно указана команда терминала, заключенная в postrotate и endscript. Строки, находящиеся между данными служебными словами, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh после ротации файла журнала.
postrotate
endscript
Выполнить принудительно ротацию логов и автозапуск можно, запустив утилиту с флагом -f (--force). Данный параметр позволяет принудительно и немедленно выполняет ротацию логов согласно указанному файлу конфигурации, игнорируя все стандартные временные интервалы и условия.
-f (--force)
Данная функция полезна в случае, если были произведены новые записи в конфигурационный файл logrotate или старые файлы журналов были удалены вручную. Будут созданы новые файлы и журналирование продолжится корректно.
Для запуска ротации вручную выполните команду (потребуются права пользователя root):
logrotate -f <путь к файлу конфигурации>
После настройки какого-либо файла конфигурации logrotate желательно проверить его корректность. Для этого необходимо запустить утилиту logrotate с опцией -d, она выведет все, что планируется сделать, но не будет изменять файлы на диске.
-d
Рассмотрим действие утилиты на примере файла /var/log/bootlog:
logrotate -d /etc/logrotate.d/bootlog WARNING: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /etc/logrotate.d/bootlog Reading state from file: /var/lib/logrotate/logrotate.status Allocating hash table for state file, size 64 entries Handling 1 logs rotating pattern: /var/log/boot.log after 1 days (7 rotations) empty log files are not rotated, old logs are removed considering log /var/log/boot.log Now: 2024-11-15 11:46 Last rotated at 2024-11-15 11:00 log does not need rotating (log is empty)
Если сообщений об ошибках нет, можно считать, что настройка завершена успешно.
При запуске утилит непривилегированным пользователем user сгенерированные им журналы хранятся в каталоге /home/user/logs/. В таком случае файл конфигурации logrotate должен находиться в домашнем каталоге данного пользователя.
Создайте такой файл конфигурации в домашнем каталоге пользователя user:
nano /home/user/logrotate.conf
Укажите следующие параметры:
/home/user/logs/*.log { hourly missingok rotate 5 compress create }
где:
/home/user/logs/*.log — путь к файлу, который нужно ротировать;
/home/user/logs/*.log
hourly — выполнять ротацию каждый час;
missingok — пропускать ротацию без ошибки если файл не существует;
rotate 5 — хранить 5 архивных копий перед удалением;
rotate 5
compress — сжимать архивные копии;
create — создавать новый пустой лог-файл после ротации.
Сохраните изменения в файле и закройте его.
Затем создайте каталог logs и тестовый файл в нем следующими командами от имени локального пользователя user:
cd ~ mkdir logs
touch logs/access.log
Для проверки работы данной реализации выполните команду:
logrotate /home/user/logrotate.conf --state /home/user/logrotate-state --verbose reading config file /home/user/logrotate.conf Creating stub state file: /home/user/logrotate-state acquired lock on state file /home/user/logrotate-state Reading state from file: /home/user/logrotate-state Allocating hash table for state file, size 64 entries Handling 1 logs rotating pattern: /home/user/logs/*.log hourly empty log files are rotated, (5 rotations), old logs are removed considering log /home/user/logs/acces.log Creating new state Now: 2025-10-15 12:48 Last rotated at 2025-10-15 12:00 log does not need rotating (log has already been rotated) set default create context to unconfined_u:object_r:user_home_t:s0
Из лога выполнения следует, что данный файл журнала ранее не обрабатывался утилитой logrotate.
Однако в файле состояния logrotate будет отображаться записанная информация с меткой о времени запуска. Для проверки файла состояния /home/user/logrotate-state выполните следующую команду:
cat /home/user/logrotate-state logrotate state -- version 2 "/home/user/logs/acces.log" 2025-10-15-12:0:0
Задание на автоматический запуск создается по умолчанию в файле /etc/cron.daily/logrotate.
Для настройки автоматической ротации логов приложения по нестандартному расписанию требуется определить полный путь к исполняемому файлу logrotate.
Выполните команду от имени локального пользователя для определения полного пути к исполняемому файлу logrotate:
which logrotate /usr/sbin/logrotate
Чтобы настроить автоматический запуск logrotate для текущего пользователя, откройте пользовательский crontab:
crontab -e
И добавьте в него следующую запись:
15 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state
Настроенное расписание обеспечивает выполнение задачи на 15-й минуте каждого часа.
Сохраните внесённые изменения и завершите работу с файлом.
Дата последнего изменения: 22.10.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.