Как настроить logrotate на ежечасное вращение журналов?

23

Согласовывающе Руководство по администрированию Unix и Linux и man, LogRotate имеет варианты daily, weeklyи monthly, но есть способ , чтобы добавить hourlyвариант?

В этой записи блога упоминается, что вы можете установить size 1и удалить параметр времени (например, daily), а затем вручную вызвать logrotateс помощью cron- я полагаю, что-то вроде

logrotate -f /etc/logrotate.d/my-hourly-file

но есть ли более элегантное решение для ежечасного ротации бревен?

УХО
источник
Конечно. Какая у вас операционная система, какая версия?
Нильс
Ubuntu 10.04 и 11
cwd

Ответы:

20

В зависимости от вашей ОС. В некоторых (всех?) Дистрибутивах Linux есть каталог, в /etc/cron.hourlyкоторый вы можете помещать задания cron, которые будут выполняться каждый час.

У других есть каталог /etc/cron.d/. Там вы можете поместить задания cron, которые должны выполняться любым специальным пользователем, с обычными настройками cron для записи в crontab (и вы должны указать имя пользователя).

Если вы используете любой из них вместо стандартного сценария ротации журналов, /etc/cron.daily/вы должны скопировать этот сценарий туда и cp /dev/nullв исходное положение. В противном случае он будет активирован путем обновления патча logrotate.

Для правильного почасового вращения также следите за тем, чтобы dateextдиректива не была установлена. Если это так, по умолчанию первый повернутый файл получит расширение текущей даты, например, ГГГГММДД. Затем, второй раз, когда logrotate активируется в течение того же дня, он просто пропускает вращение, даже если sizeпорог превышен.

Причина в том, что новое имя файла для поворота уже существует, и logrotate не добавляет содержимое к существующему старому файлу. Например, для RHEL и CentOS dateextдиректива по умолчанию указана в /etc/logrotate.conf. После удаления или комментирования этой строки повернутые файлы просто получат порядковый номер в качестве расширения до достижения rotateзначения. Таким образом, можно выполнять несколько поворотов в день.

Nils
источник
5

Просто чтобы добавить к ответу Nils, если вы меняете расположение logrotateскрипта в окне Debian или Ubuntu, возможно, безопаснее использовать dpkg-divertвместо простого копирования файла и копирования /dev/nullв исходное положение, например:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
boltronics
источник
Я не знал об этом, и я использую Ubuntu в течение многих лет. Спасибо. :)
Vaughany
2

Еще один вариант - добавить команду logrotate в список crontab. Затем он будет выполняться каждый час.

crontab -e

добавить строку ниже в список crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
Васантха Герат
источник