Як я можу налаштувати логротат, щоб обертати журнали щогодини?


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у вихідне положення. В іншому випадку він буде активований логротатним оновленням патча.

Для правильного погодинного обертання також слідкуйте за тим, щоб dateextдиректива не була встановлена. Якщо так, за замовчуванням перший повернутий файл отримає розширення поточної дати, наприклад, YYYYMMDD. Тоді, вдруге логротат активізується протягом того ж дня, він просто пропускає обертання, навіть якщо sizeпоріг був перевищений.

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


5

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

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

Я про це не знав, і я користувався Ubuntu роками. Дякую. :)
Vaughany

2

Ще одним варіантом буде додавання команди logrotate до списку crontab. Тоді воно буде виконуватися щогодини.

crontab -e

додати нижній рядок до списку crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.