Согласовывающе Руководство по администрированию Unix и Linux и man
, LogRotate имеет варианты daily
, weekly
и monthly
, но есть способ , чтобы добавить hourly
вариант?
В этой записи блога упоминается, что вы можете установить size 1
и удалить параметр времени (например, daily
), а затем вручную вызвать logrotate
с помощью cron
- я полагаю, что-то вроде
logrotate -f /etc/logrotate.d/my-hourly-file
но есть ли более элегантное решение для ежечасного ротации бревен?
Ответы:
В зависимости от вашей ОС. В некоторых (всех?) Дистрибутивах 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, если вы меняете расположение
logrotate
скрипта в окне Debian или Ubuntu, возможно, безопаснее использоватьdpkg-divert
вместо простого копирования файла и копирования/dev/null
в исходное положение, например:источник
Еще один вариант - добавить команду logrotate в список crontab. Затем он будет выполняться каждый час.
добавить строку ниже в список crontab
источник