Найти тему
Digital Studium

Linux: как ограничить размер папки /var/log

Оглавление

Иногда в операционной системе Linux папка /var/log , в которой хранятся логи (журналы событий) всех установленных программ, увеличивается в размере настолько, что становится причиной нехватки места на диске. Как ограничить рост размера этой папки? Выполнив два шага из этой статьи, вы сможете поставить размер папки /var/log под контроль.

Шаг 1. Ограничение размера логов journald

Логи всех сервисов systemd складываются в папку /var/log/journal/ сервисом journald. Чтобы установить предельный размер этой папки, выполните следующие команды:

sudo bash -c 'echo "SystemMaxUse=100M" >> /etc/systemd/journald.conf'

sudo systemctl restart systemd-journald

Вместо размера 100M вы можете указать любой другой размер, в единицах измерения K, M, G, T. После вышеуказанных команд вы можете убедиться, что размер папки /var/log стал иметь заданный размер с помощью команды:

du -sh /var/log/journal/

Шаг 2. Ограничение количества файлов логов, ротируемых logrotate

logrotate это программа для ротации логов, как правило установленная в любом дистрибутиве Linux. Под ротацией подразумевается сжатие файлов логов + удаление устаревших архивов логов. С помощью cron, эта программа каждый день совершает ротацию почти всех лог-файлов, находящихся в папке /var/log. Например, если я наберу в терминале команду

ls /var/log/kern*

то я увижу, что помимо файла /var/log/kern.log у меня хранится ещё 4 файла, которые сохранил logrotate:

/var/log/kern.log /var/log/kern.log.2.gz /var/log/kern.log.4.gz

/var/log/kern.log.1 /var/log/kern.log.3.gz

Чтобы ограничить количество архивов лог-файлов, нужно отредактировать файл /etc/logrotate.d/rsyslog. Посмотрев содержимое файла /etc/logrotate.d/rsyslog, с помощью команды:

cat /etc/logrotate.d/rsyslog

мы увидим, что дефолтное значение параметра rotate равно
4:

/var/log/syslog

/var/log/mail.info

/var/log/mail.warn

/var/log/mail.err

/var/log/mail.log

/var/log/daemon.log

/var/log/kern.log

/var/log/auth.log

/var/log/user.log

/var/log/lpr.log

/var/log/cron.log

/var/log/debug

/var/log/messages

{

rotate 4

weekly

missingok

notifempty

compress

delaycompress

sharedscripts

postrotate

/usr/lib/rsyslog/rsyslog-rotate

endscript

}

Можно изменить 4 на какое-то другое значение, например, на 1, чтобы хранился только один файл. В папке /etc/logrotate.d/ вы найдёте также множество других конфигурационных файлов, относящихся к другим лог-файлам, там вы тоже можете изменить параметр rotate.

Вот такие два простых шага позволят вам ограничить место на диске, занимаемое логами в ОС Linux.