Однажды я устанавливал FreeRadius из исходного кода, по этому понадобилось сделать скрипт ротации логов, так как файл логов иногда вырастал до больших размеров, например при технических работах или разработке много отладочной информации могло записываться, при стандартной работе, логи почти не писались.
В установочных файлах есть пример конфигурации ротации логов:
cp /opt/freeradius-server-3.0.23/scripts/logrotate/freeradius /etc/logrotate.d/
/var/log/radius/radius.log {
# common options
daily
rotate 14
missingok
compress
delaycompress
notifempty
copytruncate
su radiusd radiusd
}
Однако в моем случае файл radius.log находится в другом месте и с другими правами, по этому я сделал свой файл /etc/logrotate.d/freeradius:
/usr/local/freeradius/var/log/radius/radius.log {
monthly
rotate 3
missingok
compress
delaycompress
notifempty
copytruncate
su freerad freerad
}
Благодаря параметру «copytruncate», файл radius.log копируется в radius.log.1, и потом radius.log очищается до нулевого размера, вместо переименования в radius.log.1 и создания radius.log, чтобы не пришлось перезапускаться сервер FreeRadius.
Сделаем тест скрипта, чтобы убедится что нет например ошибки «Permission denied», как в моем случае на директорию с логами были права только для root пользователя:
logrotate -d /etc/logrotate.d/freeradius
chmod 777 /usr/local/freeradius/var/log/radius/
Если все ок, тогда принудительно запустим ротацию:
logrotate -f /etc/logrotate.d/freeradius
Статус можно посмотреть в файле /var/lib/logrotate/status
Смотрите также мои статьи:
ABillS. Установка Freeradius
Настройка logrotate для ротации логов