Журналы в Linux иногда разрастаются до неприличных размеров, что приводит к снижению производительности и в некоторых особо запущенных случаях может даже вызвать переполнение дискового пространства. К счастью, администратор может установить себе в помощь утилиту logrotate — настройка Linux для управления журналами.
Это утилита, выполняющая ротацию и сжатие протоколов. При правильной настройке файл журнала никогда не разрастется до огромных размеров. Если же она не установлена или же неправильно настроена, файловые данные некоторых сервисов (например, Apache) могут занять на диске кучу свободного места.
По умолчанию утилита Logrotate уже предустановлена в Ubuntu 16.04. Она настроена для своевременной обработки журналов всех имеющихся в системе и используемых пользователями приложений, в том числе rsyslog.
Несмотря на то, что утилита изначально установлена по умолчанию, будет нелишним проверить ее конфигурацию. На одном из моих серверов
Logrotate настройка имеет конфигурацию, хранящуюся по следующему адресу:
Рассмотрим конфигурацию, предлагаемую утилитой logrotate Linux с целью ротации для apport — /etc/logrotate.d/apport:
/var/log/apport.log {
daily
rotate 7
delaycompress
compress
notifempty
missingok
}
Вот что означают такие данные:
Конечно, это далеко не все допустимые параметры конфигурации. О дополнительных вы можете узнать в справке (команда man logrotate) или по ссылке.
Теперь представим, что у нас есть некий сервис daemond, хранящий свои файлы в каталоге /var/log/daemond. Нужно настроить ротацию этого сервиса.
Все достаточно просто: нужно в /etc/logrotate.d создать daemond (название бывает и иным, важно, понимать, что находится в этом файле сразу по его названию) и заполнить конфигурацию ротации.
Воссоздадим конфигурацию ротации:
touch /etc/logrotate.d/daemond
Конфигурация, установленная пользователем, может быть такой:
/var/log/daemond/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640
sharedscripts
postrotate
systemctl reload daemond
endscript
}
Первая строчка задает требуемые файлы. Здесь это все
Параметр sharedscripts говорит о том, что скрипт под названием postrotate будет выполняться только лишь 1 раз, а не непосредственно после детальной обработки любого имеющегося файла.
Параметры postrotate и endscript позволяют указать скрипт, который будет запущен только уже после того, как журнал полностью обновится. В указанном примере приложение перезагружается.
Осталось настроить утилиту на автоматический запуск. Чтобы она запускалась автоматически, введите команду crontab -e и в появившемся редакторе добавьте строку:
10 * * * * /usr/sbin/logrotate /etc/logrotate.conf
Сохраните файл и выполните выход из редактора. Мы создали расписание планировщика, которое будет выполнять logrotate на