Ротация переименовывает лог и заводит новый. Правило говорит, когда это делать и что делать со старыми файлами.
logrotate при ротации переименовывает app.log в app.log.1, прежний app.log.1 — в app.log.2 и так далее, а лишние старые удаляет. Затем создаёт новый пустой app.log, и программа пишет уже в него. Правило из упражнения:
size 1k — вращать, когда файл больше килобайта. rotate 2 — хранить два старых файла. missingok — не считать ошибкой, если лога нет, notifempty — пустой лог не вращать. nocompress — не сжимать старые файлы. create — с какими правами, владельцем и группой создать новый лог.
Системные правила лежат в /etc/logrotate.d/. Раз в сутки их выполняет служба logrotate.service по таймеру logrotate.timer, и условие вроде size проверяется именно в этот момент. Когда и что вращали, logrotate помнит в файле состояния: у системных правил это /var/lib/logrotate/status, у правила из урока — свой /srv/rotate-lab/state. Ключ --force вращает лог сразу, без проверки условий.
Лог с правилом size 1k в /etc/logrotate.d перерос порог в 10:00. Когда его повернут?
-
logrotate за файлами не следит: условие
sizeон проверяет, когда его запускают. Время запуска показываетsystemctl list-timers logrotate.timer. -
--forceвращает сразу и без условий, но и без него ротация будет: таймер запустит logrotate, и тот увидит, что лог больше 1k.
Системные правила выполняет logrotate.timer раз в сутки, и size проверяется в этот момент. До запуска лог может вырасти намного больше порога.
Главное в шаге
-
Ротация переименовывает лог в
.1, сдвигает старые и создаёт новый файл. - Правило задаёт условие, число старых файлов, сжатие и владельца нового лога.
-
Системные правила выполняет
logrotate.timerраз в сутки,--forceвращает сразу.