Настройка logrotate в Debian / Ubuntu. Ротация логов
Logrotate — программа для управления лог-файлами, автоматически архивирует, удаляет, очищает их.
Установка:
Файлы настроек находятся в /etc/logrotate.d/
Пример настройки ротации логов для nginx:
weekly
# ротация раз в неделю
missingok
# отсутствие файла не является ошибкой
rotate 52
# сохраняется последние 52 ротированных файла
compress
# сжимать ротируемый файл
delaycompress
# сжимать предыдущий файл при следующей ротации
notifempty
# не обрабатывать пустые файлы
create 640 root adm
# сразу после ротации создать пустой файл с заданными правами и пользователем
sharedscripts
# скрипты prerotate/postrotate будут выполнены только один раз не зависимо от количества журналов, подходящих под заданный шаблон
postrotate
# скрипт будет выполнен сразу после ротации
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
Проверяем как все у нас будет работать (ничего не создастся и не удалиться, это только проверка):
Если все в порядке, можно запустить ротацию:
Ваша инструкция не работает!
Мне выдаёт что нет пакетов для инсталяции. Debain 3.2.65-1+deb7u1 x86_64
Скорее всего logrotate уже установлен
Ваша инструкция работает, но есть одна ошибка — после ротации nginx не пишет в новый файл acceess.log, а пишет в старый, но уже переименованный access.log.1
Перерыл кучу сайтов, но не нашёл ответа. Проблема появилась после upgrade OS.
Ubuntu 14, nginx 1.8
Напишите
postrotate
/etc/init.d/nginx reload
endscript
И будет все писаться в новый гол